Java学习笔记(三)——流

来源:互联网 发布:粮食收购软件 编辑:程序博客网 时间:2024/05/26 02:51

1.用file处理文件虽然比较简单,但它有一些限制:流的读写是顺序的,无法实现对文件的随机访问,也不能在读取数据的同时写数据。要实现这些功能,需要用到专门的类:RandomAccessFile。该类支持随机存取文件的读取和写入,可以跳转到文件的任意位置处读取数据。

 

2.File f = new File("D:\\test","file.txt");

File f = new File("D:/test","file.txt");

注:“\\”是“/”的转义字符,所以都是正确的。

 

3.流就是数据流向某个对象,并且到达这个对象的过程。输入流代表外设流入都计算机内存的数据序列,输出流代表从计算机内存流向外设的数据序列。

  根据数据类型的不同,流分为2类:一种是字节流(Byte流),一次读写8位二进制数,InputStream和OutputStream设计成字节流类;一种是字符流(Character流),一次读写16位二进制数,Reader和Writer为字符流设计。

 

4.字节流的处理方式

   InputStream和OutputStream定义了最基本的输入和输出功能。但它们都是抽象类,并不能完成实际的操作,程序员需要根据实际情况来选择子类生成对象。

   FileInputStream类是InputStream的直接子类,该类主要负责对本地磁盘文件的顺序读入工作。

   FileOutStream类是OutputStream的直接子类,该类主要负责对本地磁盘文件的顺序输出工作。

 

5.Reader类和Writer类

  一次性处理2个字节的流,称为字符流。字符流分为两个类:Reader类和Writer类,Reader类负责字符输入工作,Writer类负责字符输出工作。它们也都是抽象类,实际使用的是它们的子类。其中子类InputStreamReader和OutputStreamWriter是由字节流转换成字符流的通道。

 

6.FileReader和FileWriter类分别是InputStreamReader类和OutputStreamWriter类的子类,用来读取字符文件和写入字符文件的便捷类,并且可以指定文件名称或File对象打开指定的文件。字符转化根据系统默认的编码类型,如果用户指定编码,就是用InputStreamReader和OutputStreamWriter。

 

7.缓冲字符流BufferReader和BufferWriter类的使用可以提高字符流的处理效率。

BufferReader类是继承Reader类的子类,其在内部有缓冲机制,所以可以以行为单位进行输入工作。不仅具有Reader类的方法,还具有自己的特有的方法如:readLine(),表示按行读取字符,它以回车符和换行符为结束标志。

BufferWriter类是继承Writer类的子类,其在内部有缓冲机制,所以可以以行为单位进行输出工作。不仅具有Writer类的方法,还具有自己的特有的方法如:rnewLine(),表示写入一个行分隔符。行分隔符字符串由系统属性line.separator定义,并且不一定是单个新行('\n')符。

 

8.System.out是1个FilterOutputStream,OutputStream,PrintStream。

   out是FilterOutputStream类内封装的一个过滤的基础输出流字段。然而FilterOutputStream类又是OutputStream类的直接子类,并且out的返回值类型也是OutputStream。PrintStream类是FilterOutputStream类的直接子类,所以它可以从FilterOutputStream类中继承out字段。但PrintStream与其他输出流不同,PrintStream不会抛出IOException。

原创粉丝点击