• 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());
            }
  • 相关阅读:
    Atitit 人脸识别 眼睛形态 attilax总结
    Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
    atitit 板块分类 上市公司 龙头企业公司 列表 attilax总结.docx
    Atititi atiitt eam pam资产管理 购物表去年.xlsx
    使用cmd查看电脑连接过的wifi密码(一)
    常见十大web攻击手段 悟寰轩
    常见web攻击方式 悟寰轩
    【MYSQL数据库】MYSQL学习笔记mysql分区基本操作 悟寰轩
    Filter及FilterChain的使用详解 悟寰轩
    启动tomcat spring初始化两次问题(eg:@PostConstruct) 悟寰轩
  • 原文地址:https://www.cnblogs.com/hup666/p/10302161.html
Copyright © 2020-2023  润新知