java 数据流操作

一   对象流   用于序列化和发序列化

实现序列化
//对象
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());
        }
原文地址:https://www.cnblogs.com/hup666/p/10302161.html