一 对象流 用于序列化和发序列化
实现序列化
//对象
Student student = new Student("小伙子", 25);
//序列化
try {
//文本输出流
FileOutputStream fos = new FileOutputStream("D:\test\serialTest.txt");
//对象输出流
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(student);
oos.close();
} catch (Exception ex) {
System.out.println("序列化发生异常=" + ex.toString());
}
结果: 生成了文本文件 serialTest.tx,里面存有字节内容
反序列化
//反序列化 try { FileInputStream fis = new FileInputStream("D:\test\serialTest.txt"); //对象输入流 ObjectInputStream ois = new ObjectInputStream(fis); Object obj = ois.readObject(); ois.close(); Student studentNew = (Student) obj; System.out.println("反序列化结果=" + studentNew.toString()); } catch (Exception ex) { System.out.println("反序列化发生异常=" + ex.toString()); }
结果
反序列化结果=name=小伙子,age=25
对象流实现深度克隆,见本人另一篇博客
https://www.cnblogs.com/hup666/p/12019960.html
二 文本流
//文本流写入内容
try {
//文本输出流
FileWriter fw = new FileWriter("D:\test\file.txt");
fw.write(22);
fw.close();
} catch (Exception ex) {
System.out.println("文本流写入内容异常=" + ex.toString());
}
//文本流读取内容
try {
//文本输入流
FileReader fr = new FileReader("D:\test\file.txt");
Object obj = fr.read();
fr.close();
System.out.println("从文本文件内读取到内容=" + obj.toString());
} catch (Exception ex) {
System.out.println("文本流写入内容异常=" + ex.toString());
}
结果:生成了 file.txt 文件 里面存有字节数据
结果:从文本文件内读取到内容=22
三 缓冲区
程序频繁地操作一个资源(如文件),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域中,以后直接从此区域中读取数据即可,因为读内存速度比较快,这样提高性能。
在IO中引入缓冲区,主要是提高流的读写效率。
当写入设备时,先写入缓冲区,等到缓冲区有足够多的数据时,就整体写入设备
缓存区 读取
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\test\buffer.txt"), "GBK");
BufferedReader reader = new BufferedReader(isr);
String line = null;
while ((line = reader.readLine()) != null) //此过程中,读入缓冲区一行一行的读取数据,效率高
{
System.out.println(line);
}
reader.close();
} catch (Exception ex) {
System.out.println("用缓存读取异常" + ex.toString());
}
缓存区 写
//使用缓冲区 写 try { OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\test\buffer.txt"), "GBK"); BufferedWriter writer = new BufferedWriter(osw); for (int i = 0; i < 10; i++) { writer.write("写入文本=" + i); writer.newLine(); } writer.close(); } catch (Exception ex) { System.out.println("用缓存写入异常" + ex.toString()); }