package com05;
import java.io.*;
public class Byte7 {
public static void main(String[] args) throws IOException {
//注意BufferedReader 和 BufferedWriter 只能读取字符文件不要读取二进制文件(声音视频等
//等)。可能会对文件造成破坏
BufferedReader bufferedReader = new BufferedReader(new FileReader("text.txt"));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("text2.txt",true));
String lengs;
while ((lengs=bufferedReader.readLine())!=null){//取一整行
bufferedWriter.write(lengs);
bufferedWriter.newLine();
}
bufferedReader.close();
bufferedWriter.close();
}
}
InputStream是一个抽象父类,不可以直接使用,我们使用的是它的子类:
1. ByteArrayInputStream 从byte[]数组中以字节的方式读取
2. FileInputStream 从文件中以字节为单位读取
3. FilterInputStream 用来封装其他输入流
1. BufferInputStream 开辟内部字节缓冲数组,对输入流进行缓存,返回一个字节数组
2. DataInputStream 用来装饰其它输入流,它允许应用程序以与机器无关方式从底层输入流中读取基本的Java数据类型,然后使用DataOutputStream写出数据
4. ObjectInputStream 从输入流中读取序列化后的数据,并进行反序列化
5. PipedInputStream 从管道中读取数据
(2)OutputStream的结构
OutputStream是一个abstract class
1. ByteArrayOutputStream 以字节为单位将数据写入到字节数组中
2. FileOutputStream 从文件中以字节的方式读取以字节为单位将数据写入到文件中
3. FilterOutputStream 用来封装其他输出流,并为其提供功能
1. ZipOutputStream 以字节为单位 向zip文件中写入数据
2. PrintStream 装饰其他输出流,可以很方便的打印出各种数据格式的数据
3. DataOutputStream 允许程序写入与机器无关的Java数据类型
4. BufferedOutputStream 写缓冲流
4. ObjectOutputStream 对象序列化,并且用来写出序列化后的数据
5. PipedOutputStream 管道输出流
字符流 I/O结构
Reader同样是一个 抽象父类
InputStreamReader 是字节流和字符流之间的桥梁,转换器
FileReader 以字符为单位读取文本文件
BufferedReader 一次从流中读取8K的数据放到内存中大小可以自己设置,这样的好处是减少字节流IO操作的时间,IO操作最费时间
CharArrayReader 用来读取字符数组和ByteArrayInputStream类似
…
Writer就不在赘述
下面是InputStream字节输入流和InputStreamReader之间的关系,由此我们可以看到,InputStreamReader是继承自InpUtStream Cahrset Reader的,我们可以设置数据的编码格式
(3)基于磁盘的I/O
File类
(4)基于网络的I/O
Socket …