java IO流六、

* 1.什么是打印流
* 该流可以很方便的将对象的toString()结果输出, 并且自动加上换行, 而且可以使用自动刷出的模式
* System.out就是一个PrintStream, 其默认向控制台输出信息

PrintStream ps = System.out;
ps.println(97); //其实底层用的是Integer.toString(x),将x转换为数字字符串打印
ps.println("xxx");
ps.println(new Person("张三", 23));
Person p = null;
ps.println(p); //如果是null,就返回null,如果不是null,就调用对象的toString()

 


* 2.使用方式
* 打印: print(), println()
* 自动刷出: PrintWriter(OutputStream out, boolean autoFlush, String encoding)
* 打印流只操作数据目的

 

PrintWriter pw = new PrintWriter(new FileOutputStream("g.txt"), true);
pw.write(97);
pw.print("大家好");
pw.println("你好"); //自动刷出,只针对的是println方法
pw.close();

 

 

 

* 1.什么是标准输入输出流
* System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
* System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据

 


* 2.修改标准输入输出流
* 修改输入流: System.setIn(InputStream)
* 修改输出流: System.setOut(PrintStream)
*
System.setIn(new FileInputStream("a.txt")); //修改标准输入流
System.setOut(new PrintStream("b.txt")); //修改标准输出流

InputStream in = System.in; //获取标准输入流
PrintStream ps = System.out; //获取标准输出流
int b;
while((b = in.read()) != -1) { //从a.txt上读取数据
ps.write(b); //将数据写到b.txt上
}

in.close();
ps.close();

 

 

修改标准输入输出流拷贝图片
System.setIn(new FileInputStream("IO图片.png")); //改变标准输入流
System.setOut(new PrintStream("copy.png")); //改变标准输出流
InputStream is = System.in; //获取标准输入流
PrintStream ps = System.out; //获取标准输出流
int len;
byte[] arr = new byte[1024 * 8];
while((len = is.read(arr)) != -1) {
ps.write(arr, 0, len);
}
is.close();
ps.close();

 

 

 

IO流(两种方式实现键盘录入)
* A:BufferedReader的readLine方法。
* BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
* B:Scanner


###随机访问流概述和读写数据
* A:随机访问流概述
* RandomAccessFile概述
* RandomAccessFile类不属于流,是Object类的子类。但它融合了InputStream和OutputStream的功能。
* 支持对随机访问文件的读取和写入。

* B:read(),write(),seek()

  RandomAccessFile raf=new RandomAccessFile("g.txt", "rw");

raf.write(97);

raf.seek(10);

raf.write(98);

raf.close(); 

 

 

 

###数据输入输出流
* 1.什么是数据输入输出流
* DataInputStream, DataOutputStream可以按照基本数据类型大小读写数据
* 例如按Long大小写出一个数字, 写出时该数据占8字节. 读取的时候也可以按照Long类型读取, 一次读取8个字节.
* 2.使用方式
* DataOutputStream(OutputStream), writeInt(), writeLong()

DataOutputStream dos = new DataOutputStream(new FileOutputStream("b.txt"));
dos.writeInt(997);
dos.writeInt(998);
dos.writeInt(999);

dos.close();
* DataInputStream(InputStream), readInt(), readLong()

DataInputStream dis = new DataInputStream(new FileInputStream("b.txt"));
int x = dis.readInt();
int y = dis.readInt();
int z = dis.readInt();
System.out.println(x);
System.out.println(y);
System.out.println(z);
dis.close();

 

posted @ 2017-03-15 15:35  yimian  阅读(156)  评论(0编辑  收藏  举报
访问人数:AmazingCounters.com