zoukankan      html  css  js  c++  java
  • 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());
            }
  • 相关阅读:
    Mybatis动态SQL
    自己动手写一个持久层框架
    最长公共子串算法(Longest Common Substring)
    【SpringCloud】08.客户端负载均衡器:Ribbon
    ESP32 (idf-esp-v4.1)重新生成nvs分区
    IDEA导入新的springboot项目出错
    springboot集成mybatis出现问题/连接数据库出错
    Java学习周记2
    2020.8.6_Java学习日记
    9.23笔试总结
  • 原文地址:https://www.cnblogs.com/hup666/p/10302161.html
Copyright © 2011-2022 走看看