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());
            }
  • 相关阅读:
    [转]Java中的回车换行符/n /r /t
    [转]jquery.validate.js表单验证
    [转]PowerDesigner中name和code取消自动关联
    Oracle 执行报错表空间或临时表空间不足,降低水位线方法
    cookie实现自动登录
    linux 进程管理相关内容
    招银网络科技面试
    唯品会面试被虐
    sql查询最大的见多了,查询第二的呢???
    HashMap的key可以是可变的对象吗???
  • 原文地址:https://www.cnblogs.com/hup666/p/10302161.html
Copyright © 2011-2022 走看看