----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

IO流1

l  其它对象(System)

l  其它对象(Runtime)

l  其它对象(Date)

l  其它对象(Calendar)

l  其它对象(Math - Random)

l  IO流(概述)

l  IO流(FileWriter)

l  IO流(IO异常处理方式)

l  IO流(文件的续写)

l  IO流(文本文件读取方式一)

l  IO流(文本文件读取方式二)

l  IO流(拷贝文本文件)

其它对象(System)

System:类中的方法和属性都是静态的。

out:标准输出,默认是控制台。

in:标准输入,默认是键盘。

描述系统一些信息,获取系统属性信息:Properties getProperties();

示例:

import java.util.*;
class SystemDemo {
public static void main(String[] args) {
Properties prop = System.getProperties();
// 因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。
// 那么可以通过map的方法取出该集合中的元素。
// 该集合中存储都是字符串。没有泛型定义。
// 如何在系统中自定义一些特有信息呢?
System.setProperty("mykey", "myvalue");
// 获取指定属性信息。
String value = System.getProperty("os.name");
System.out.println("value=" + value);
// 可不可以在jvm启动时,动态加载一些属性信息呢?
String v = System.getProperty("haha");
System.out.println("v=" + v);
// 必须在命令窗口里输入java -D名称=值 类名
// 例如:java -Dhaha=xxx SystemDemo
/*
* //获取所有属性信息。 for(Object obj : prop.keySet()) { String value =
* (String)prop.get(obj);
*
* System.out.println(obj+"::"+value); }
*/
}
}

其它对象(Runtime)

Runtime对象,该类并没有提供构造函数,说明不可以new对象。那么会直接想到该类中的方法都是静态的,发现该类中还有非静态方法,说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型。

由这个特点可以看出该类使用了单例设计模式完成,该方式是static Runtime getRuntime();。

示例:

class RuntimeDemo {
public static void main(String[] args) throws Exception {
Runtime r = Runtime.getRuntime();//返回与当前Java应用程序相关的运行时对象
Process p = r.exec("notepad.exe  SystemDemo.java");//打开名叫SystemDemo.java的记事本文
// Thread.sleep(4000);
// p.destroy();//杀掉进程,结束它
}
}

其它对象(Date)

示例:

import java.util.*;
import java.text.*;
class DateDemo {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d);// 打印的时间看不懂,希望有些格式。
// 将模式封装到SimpleDateformat对象中。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");
// 调用format方法让模式格式化指定Date对象。
String time = sdf.format(d);
System.out.println("time=" + time);
long l = System.currentTimeMillis();
Date d1 = new Date(l);
System.out.println("d1:" + d1);
}
}

运行结果:Wed May 01 16:24:57 CST 2013

time=2013年05月01日星期三 04:24:57

d1:Wed May 01 16:24:57 CST 2013

其它对象(Calendar)

示例:

import java.util.*;
class CalendarDemo {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
String[] mons = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月",
"十月", "十一月", "十二月" };
String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", };
int index = c.get(Calendar.MONTH);
int index1 = c.get(Calendar.DAY_OF_WEEK);
sop(c.get(Calendar.YEAR) + "年");
// sop((c.get(Calendar.MONTH)+1)+"月");
sop(mons[index]);
sop(c.get(Calendar.DAY_OF_MONTH) + "日");
// sop("星期"+c.get(Calendar.DAY_OF_WEEK));
sop(weeks[index1]);
/*
* Date d = new Date();
*
* SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
*
* String year = sdf.format(d);
*
* System.out.println(year);
*/
}
public static void sop(Object obj) {
System.out.println(obj);
}
}

运行结果:2013年

五月

1日

星期三

其它对象(Math - Random)

示例:

import java.util.*;
class MathDemo {
public static void main(String[] args) {
/*
* Random r = new Random(); for(int x=0; x<10; x++) { //int d =
* (int)(Math.random()*10+1); int d = r.nextInt(10)+1; sop(d); }
*/
saveTwo(12.3456, 3, true);// 12.34
}
public static void saveTwo(double d, int scale, boolean isRound) {
double base = Math.pow(10, scale);
double num = isRound ? Math.round(d * base) / base : ((int) (d * base))
/ base;
sop("num=" + num);
/*
* double d1 = d*100; sop("d1="+d1); d1 = d1+0.5; double d2 = (int)d1;
* sop("d2="+d2); double d3 = d2/100; sop("d3="+d3);
*/
}
public static void show() {
double d = Math.ceil(16.34);// ceil返回大于指定数据的最小整数。
double d1 = Math.floor(12.34);// floor返回小于指定数据的最大整数。
long l = Math.round(12.54);// 四舍五入
sop("d=" + d);
sop("d1=" + d1);
sop("l=" + l);
double d2 = Math.pow(2, 3);
sop("d2=" + d2);
}
public static void sop(Object obj) {
System.out.println(obj);
}
}

运行结果:num=12.346

IO流(概述)

IO(Input Output)流

大多数的应用程序都需要外部设备进行数据交换,最常见的外部设备包含磁盘和网络。IO就是指应用程序对这些设备的数据输入与输出。在程序中,键盘被用做文件输入,显示器被用做文件输出。JAVA语言定义了许多类专门负责各种方式的输入输出,这些类都被放在java.io包中。

流按操作数据分为两种:字节流和字符流。

流按流向分为:输入流,输出流。

IO流常用基类

Java的流式输入/输出建立在4个抽象类的基础上:InputStream、OutputStream、Reader和Writer。它们用来创建具体流式子类。尽管程序通过具体子类进行输入/输出操作,但顶层的类定义了所有流类的基本通用功能。

InputStream和OutputStream被设计成字节流类。

Reader和Writer被设计成字符流类。

字节流和字符流类行程分离的层次结构。一般来说,处理字符或字符串时应使用字符流类,处理字节或二进制对象时应使用字节流类。

一般在操作文件流时,不管是字节流还是字符流,都可以按照以下的方式进行:

1.  使用File类找到一个文件。

2.  通过File类的对象去实例化字节流或字符流的子类。

3.  进行字节(字符)的读、写操作。

4.  关闭流文件。

IO流(FileWriter)

字符流:

字符流层次结构的顶层是Reader和Writer抽象类。

既然IO流是用于操作数据的,那么数据的最常见体现形式是:文件。那么先以操作文件为主来演示。

需求:在硬盘上,创建一个文件并写入一些文字数据。

找到一个专门用于操作文件的Writer子类对象。FileWriter。 后缀名是父类名。前缀名是该流对象的功能。

示例:

import java.io.*;
class FileWriterDemo {
public static void main(String[] args) throws IOException {
// 创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。
// 而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
// 其实该步就是在明确数据要存放的目的地。
FileWriter fw = new FileWriter("demo.txt");
// 调用write方法,将字符串写入到流中。
fw.write("abcde");
// 刷新流对象中的缓冲中的数据。
// 将数据刷到目的地中。
fw.flush();
// 关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
// 将数据刷到目的地中。
// 和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。
// fw.close();
}
}

IO流(IO异常处理方式)

示例:

import java.io.*;
class FileWriterDemo2 {
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("demo.txt");
fw.write("abcdefg");
} catch (IOException e) {
System.out.println("catch:" + e.toString());
} finally {
try {
if (fw != null)
fw.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}

IO流(文件的续写)

演示对已有文件的数据续写。

示例:

import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo3 {
public static void main(String[] args) {
FileWriter fw = null;
try {
fw = new FileWriter("demo.txt", true);
fw.write("abcdefg\rxiexie");// \r换行
} catch (IOException e) {
System.out.println("catch:" + e.toString());
} finally {
try {
if (fw != null)
fw.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}

IO流(文本文件读取方式一)

示例:

import java.io.*;
class FileReaderDemo {
public static void main(String[] args) {
// 创建一个文件读取流对象,和指定名称的文件相关联。
// 要保证该文件是已经存在的,如果不存在,会发生异常FileNotFoundException
FileReader fr = null;
try {
fr = new FileReader("demo.txt");
// 调用读取流对象的read方法。
// read():一次读一个字符。而且会自动往下读。
int ch = 0;
while ((ch = fr.read()) != -1) {
System.out.println("ch=" + (char) ch);
}
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
fr.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}

IO流(文本文件读取方式二)

通过字符数组进行读取。

示例:

import java.io.*;
class FileReaderDemo2 {
public static void main(String[] args) {
FileReader fr = null;
try {
fr = new FileReader("demo.txt");
// 定义一个字符数组。用于存储读到字符。
// 该read(char[])返回的是读到字符个数。
char[] buf = new char[1024];
int num = 0;
while ((num = fr.read(buf)) != -1) {
System.out.println(new String(buf, 0, num));
}
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
fr.close();
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
}

读取一个.txt文件,并打印在控制台上。

示例:

import java.io.*;
class FileReaderTest {
public static void main(String[] args) {
FileReader fr = null;
try {
fr = new FileReader("demo.txt");
char[] buf = new char[1024];
int num = 0;
while ((num = fr.read(buf)) != -1) {
System.out.print(new String(buf, 0, num));
}
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

IO流(拷贝文本文件)

示例:

import java.io.*;
class CopyText {
public static void main(String[] args) throws IOException {
copy_2();
}
public static void copy_2() {
FileWriter fw = null;
FileReader fr = null;
try {
fw = new FileWriter("IOSystemDemo_copy.txt");
fr = new FileReader("SystemDemo.java");
char[] buf = new char[1024];
int len = 0;
while ((len = fr.read(buf)) != -1) {
fw.write(buf, 0, len);
}
} catch (IOException e) {
throw new RuntimeException("读写失败");
} finally {
if (fr != null)
try {
fr.close();
} catch (IOException e) {
}
if (fw != null)
try {
fw.close();
} catch (IOException e) {
}
}
}
// 从C盘读一个字符,就往D盘写一个字符。
public static void copy_1() {
FileWriter fw = null;
FileReader fr = null;
try {
// 创建目的地。
fw = new FileWriter("RuntimeDemo_copy.txt");
// 与已有文件关联。
fr = new FileReader("RuntimeDemo.java");
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
} catch (IOException e) {
System.out.println(e.toString());
} finally {
if (fr != null)
try {
fr.close();
} catch (IOException e) {
}
if (fw != null)
try {
fw.close();
} catch (IOException e) {
}
}
}
}

----------------------ASP.Net+Android+IOS开发----------------------期待与您交流!

详情请查看:http://edu.csdn.net

黑马程序员————IO流1(day18)相关推荐

  1. 黑马程序员——IO流

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  2. 黑马程序员————IO流3(day20)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流3 l  File概述 l  File类常见方法 ...

  3. 黑马程序员————IO流2(day19)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流2 l  BufferedWriter l  B ...

  4. 黑马程序员 IO流

       ------- android培训.java培训.期待与您交流! ----------  IO流 java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字 ...

  5. 黑马程序员————IO流4(day21)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! IO流4 l  对象的序列化 l  管道流 l  Ra ...

  6. 黑马程序员——IO 流总结

    ------<a href="http://www.itheima.com"target="blank">Java培训.Android培训.iOS培 ...

  7. 黑马程序员---IO流

    ---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net ...

  8. 黑马程序员————IO流------(3)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- File类: 流只能操作数据,若想要用流操作被文件封装的数据信息,必须用file对象. > ...

  9. 黑马程序员--IO流(19天)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 缓冲区的出现时为了提高流的操作而出 ...

最新文章

  1. 换工作必须避开的五个坑
  2. mybatis中mapper接口的参数设置几种方法
  3. 阿里云ECS使用cloudfs4oss挂载OSS
  4. 2021考研报考人数377万,读研VS工作,哪个更值得?
  5. 如何保障研发质量不踩坑?阿里技术专家教你几招
  6. static详解java_java中static作用详解
  7. 带你自学Python系列(二):Python列表总结-思维导图
  8. 【华为云技术分享】云图说|应用编排服务AOS,助力应用上云自动化
  9. 品质和创新成为 GDC 2017 “State of Unreal” 的焦点
  10. 步步为营,重构出模式(2)
  11. let的解构赋值_前端开发es6知识 模块化、解构赋值、字符串模板
  12. MediaPlayer/MediaRecorder与AudioTrack/AudioRecord区别(三十九)
  13. Ford-Fulkerson Edmonds-Karp算法
  14. 基于深度强化学习的离散自动生产线智能调度
  15. 多终端房地产项目管理系统源码,源码分享
  16. dos2unix 安装和使用
  17. 【Dynamics365】创建报表
  18. windowsapps文件夹无法删除_Windows实战之快速安全删除Windows.old文件夹
  19. TypeError: Descriptors cannot not be created directly.
  20. 如何降低APP运营成本?

热门文章

  1. 超像素论文(三)——AINet: Association Implantation for Superpixel Segmentation
  2. R语言 编写循环语句
  3. angularjs全栈开发知乎_双剑合璧Laravel,AngularJS全栈开发知乎
  4. 计算机文化基础多选,计算机文化基础多选题..pdf
  5. 本科计算机er想做AI方向的科研,要怎么准备?
  6. 百度程序员推荐的书籍,今天免费送!
  7. Vitalik万字长文:困扰加密货币的硬核难题五年后都怎么样了?
  8. 智能背包的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. 诚之和:EDG夺冠,年轻人为何狂欢?
  10. ctfshow 萌新计划 writeup1-8