java.io包 java.io包中的类使得读写文件和处理数据流非常容易.
字节流 要读写字节,程序应使用字节流,即java.io包中InputStream类和OutputStream类的派生类.
InputStream类和OutputStream类分别为输入流(读取字节的流)和输出流(写入字节的流)提供API和部分实现.
字符流 java.io中字符流的抽象父类是Reader和Writer,读取和写入的类.
输入流 输入流在创建时会自动打开,而用close()方法显式关闭.如图2.2所示的输入流的类的关系:
InputStream 最常见的方法:
1. int read() 它从输入流读取下一个字节.字节是作为0至255之间的一个int返回的,如果已经达到流的结尾,则返回-1.
2. long skip(long) 它会跳过和丢弃此输入流的指定数目的字节.返回实际跳过的字节数.
如果为负数则没有跳过任何字节.
FileInputStream 三种构造函数:
1.将文件名视为字符串: FileInputStream f=new FileInputStream("C:/temp.txt");
2.将File对象视为其参数: FileInputStream f=new FileInputStream(new File("C:/temp.txt"));
3.将FileDescriptor对象视为其参数 FileInputStream f=new FileInputStream(new FileDescriptor());
ByteArrayInputStream 将字节数组用作源,并在该数组中执行读操作.(两种构造函数)
1.将字节数组用作参数: ByteArrayInputStream b=new ByteArrayInputStream(buf[]);
2.从指定的字节数组来创建: ByteArrayInputStream b=new ByteArrayInputStream(buf[],off,len);
其中 off是要读取的第一个字节的偏移,len是要读入数组的字节数
StringBufferInputStream 与ByteArrayInputStream很相似,不同的是内部缓冲器中的是字符串数组而不是字节数组.
输出流 OutputStream类是抽象类,提供输出流的最小编程接口和部分实现.OutputStream的体系如下:
OutputStream 最常见的方法:
1. void write(int) 将指定字节写入输出流,被写入的字节参数的八个低位比特,高位比特被忽略.
2. void close() 关闭此输出流并释放与这个流相关联的资源.
3. void flush() 刷新此输出流,强制写出任何缓冲输出字节.
FileOutputStream 此类创建文件(如果文件不存在),并将数据写入文件. (四种构造函数)
1. 将文件名作为字符串: FileOutputStream f=new FileOutputStream("C:/temp.txt");
2. 将File对象作为其参数: FileOutputStream f=new FileOutputStream(new File("C:/temp.txt"));
3. 将FileDescriptor对象作为参数 FileOutputStream f=new FileOutputStream(new FileDescriptor());
4. 将文件名为第一参数,将布尔值作为第二参数.
|