概念
java中一切都是面向对象的,在I/O流操作中,可分为数据对象和操作数据对象,对流操作的单元可分为字节流和字符流。
字节流:
1)操作对象是字节,字节是数据在计算机中存储的单元,是一个二进制数
2)是直接操纵文件
字符流:
1)操作对象是文本,字符是抽象符号定义
2)会将数据放入缓冲区,在操作流对象关闭的时候,从缓冲区中写出数据
输入流:
对数据操作,以流的形式存在,从流中读取数据
输出流:
对数据处理,写入到流中,写出到文件中
字节流
SequenceInputStream
SequenceInputStream sequenceInputStream = null;
Vector<FileInputStream> vector = new Vector<FileInputStream>();
vector.addElement(new FileInputStream(new File("D://text1.txt")));
vector.addElement(new FileInputStream(new File("D://text2.txt")));
vector.addElement(new FileInputStream(new File("D://text3.txt")));
vector.addElement(new FileInputStream(new File("D://text4.txt")));
Enumeration<FileInputStream> e = vector.elements();
sequenceInputStream = new SequenceInputStream(e);
FileOutputStream outputStream1 = new FileOutputStream(new File("D://file2.txt"));
//输出流 操作单元以数组形式
//每次读一个字节,缓存到字节数组中,然后返回
byte[] buffer1 = new byte[1024];
int temp = 0 ;
while((temp = sequenceInputStream.read(buffer1)) != -1){
System.out.println((char)temp);
//将字节数组buffer1偏移量0长度为temp的数据写出
outputStream1.write(buffer1, 0, temp);
//强制将缓冲区的数据输出到输出流
outputStream1.flush();
}
sequenceInputStream.close();
outputStream1.close();
ByteArrayInputStream
String str = "welcome to shanghai";
//输出到控制台
PrintStream printStream = new PrintStream(System.out);
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(str.getBytes());
int index = 0;
//从字节流中一个个字节读取并返回
while((index = byteInputStream.read()) != -1){
printStream.write(index);
}
printStream.close();
byteInputStream.close();
Object(Input/Output)Stream ##
//输出流 将数据写出到流中
TestBean bean = new TestBean();
bean.setName("shanghai");
OutputStream outputStream = new FileOutputStream("object.data");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(bean);
//输入流 从流中将数据读取
InputStream inputStream = new FileInputStream("object.data");
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
TestBean testBean = (TestBean) objectInputStream.readObject();
//输出到控制平台
PrintStream print = new PrintStream(System.out);
print.print(testBean.getName());
outputStream.close();
objectOutputStream.close();
inputStream.close();
objectInputStream.close();
print.close();
Data(Input/Output)Stream
OutputStream outputStream = new FileOutputStream("object.data");
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
TestBean bean = new TestBean();
bean.setName("shanghai");
dataOutputStream.writeUTF(bean.getName());;
InputStream inputStream = new FileInputStream("object.data");
DataInputStream dataInputStream = new DataInputStream(inputStream);
String str = dataInputStream.readUTF();
PrintStream print = new PrintStream(System.out);
print.print(str);
outputStream.close();
dataOutputStream.close();
inputStream.close();
dataInputStream.close();
print.close();
字符流
FileReader reader = new FileReader(new File("D://text1.txt"));
PrintWriter writer = new PrintWriter(System.out);
int index = 0;
char[] chars = new char[512];
while((index = reader.read(chars)) != -1){
writer.write(chars, 0, index);
}
reader.close();
writer.close();