黑马程序员技术交流社区

标题: io流 [打印本页]

作者: kkkkkccccc    时间: 2015-7-30 23:53
标题: io流
IO流


四个类全是抽象类(站在java程序角度)
FileWriter字符输出流
       
等同于下面        这句代码  ||

1) 因为FileWriter底层会自动创建文件,如果有a.txt就覆盖,如果没有就创建
详解:

2) 这步完成后并没有写到文件中,而是写到了缓冲区,所以接着还要fw.flush();
3) 流对象如果不手动释放资源,jvm的垃圾回收器永远不会释放流对象,所以需要手动释放资源
为什么要close()呢?       
1.让流对象变成垃圾(流对象不能再继续使用)
2.通知系统去释放和文件相关的资源.       



        ↓↓↓↓↓↓↓
问题3答案:两种方法都不可取,因为每写入一个字就调用一次flush的话,如果写入大量文字的时候这时候效率就太低了,但是如果写入大量文字在缓冲区,直接等到close()再刷新的话如果文字太多,不及时刷新缓冲区的话,又怕会内存溢出,所以要设置刷新间隔,

所以开发中一般这样写:每一万次以后刷新一次缓冲区.


----------------------------------------------------------------------------------------------------------------------

写入数据


Windows记事本不识别”\n”,必须用”\r\n”
而有些软件,在制作的时候为了通用,对任何换行符都可以识别.

③数据每次都把以前的给覆盖了,如果我想追加写入,怎么办?
构造的时候,用带两个参数的。这样就不会删除以前的文件,而是在以前的文件上追加写入
public FileWriter(String fileName,boolean append)//后面的boolean默认是false不追加,想追加需手动改为true

标准异常处理代码(close()必须放在finally{}里面)




----------------------------------------------------------------------------------------------------------------------



FileReader字符输入流

一次读取一个字符:(3步)

Int可以接收char类型,但是返回的是int类型,是char在asik码表里面对应的值.
回车换行符(\r\n)默认不显示,占两个字符

等同于下面的代码,开发写法↓↓↓↓↓↓


案例:cn.itcast02.CopyFile.java
把项目路径下的FieldWriterDemo.java赋值到D:\\Copy.java中
思路:




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2