• Java中的I-O(二)


    一、Reader类

    1、Reader类常用方法

    int read( )
    int read(char[] c)
    read(char[] c,int off,int len)
    void close( )

    2、子类InputStreamReader常用的构造方法

    InputStreamReader(InputStream in)
    InputStreamReader(InputStream in,String charsetName)

    3、FileReader类

    FileReader类是InputStreamReader的子类

    • FileReader(File file)
    • FileReader(String name)

    该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型

    • System.out.println(System.getProperty(“file.encoding”)); 获得本地平台的字符编码类型

    4、使用FileReader读取文件

    与字节流FileInputStream类实现文本文件读取步骤类似
    引入相关的类
    import java.io.Reader;
    import java.io.FileReader;
    import java.io.IOExceprion;
    
    创建FileReader对象
    Reader fr= new FileReader("D:\\myDoc\\简介.txt");
    
    读取文本文件的数据
    fr.read(); 
    
    关闭相关的流对象
    fr.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    5、BufferedReader类

    使用FileReader类与BufferedReader类可以提高字符流读取文本文件的效率

    • BufferedReader类是Reader类的子类
    • BufferedReader类带有缓冲区
    • 按行读取内容的readLine()方法

    BufferedReader常用的构造方法

    • BufferedReader(Reader in)

    子类BufferedReader特有的方法

    • readLine()

    6、使用 BufferedReader读文本文件

    引入相关类
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    
    构造BufferedReader 对象和FileReader 对象
    Reader fr = new  FileReader("C:\\myTest.txt "); 
    BufferedReader br = new BufferedReader(fr); 
    
    调用readLine() 方法读取数据
    br.readLine();
    
    关闭文件流对象
    br.close();
    fr.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    二、Writer类

    1、Writer类常用方法

    write(String str)
    write(String str,int off,int len)
    void close()
    void flush()

    2、子类OutputStreamWriter常用的构造方法

    OutputStreamWriter(OutputStream out)
    OutputStreamWriter(OutputStream out,String charsetName)

    3、FileWriter类

    FileWriter类是OutputStreamWriter的子类

    • FileWriter (File file)
    • FileWriter (String name)

    该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型

    4、使用FileWriter写文件

    与字节流FileOutputStream类实现向文本文件写入数据步骤类似
    引入相关的类
    import java.io.Reader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    创建FileReader对象
    Writer fw= new FileWriter("D:\\myDoc\\简介.txt");
    
    写文本文件
    fw.write(); 
    
    关闭相关的流对象
    fw.close(); 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    5、BufferedWriter类

    使用FileWriter类与BufferedWriter类 可与提高字符流写文本文件的效率

    • BufferedWriter类是Writer类的子类
    • BufferedWriter类带有缓冲区

    BufferedWriter常用的构造方法

    • BufferedWriter(Writer out)

    6、使用 BufferedWriter写文件

    引入相关的类
    import java.io.FileWriter ;
    import java.io.BufferedWriter ;
    import java.io.IOException;
    
    构造BufferedWriter 对象和FileWriter 对象
    FileWriter fw = new FileWriter("C:\\myTest.txt"); 
    BufferedWriter bw = new BufferedWriter(fw);
    
    调用write()方法写数据
    bw.write("hello");
    
    流对象的清空和关闭flush()close()
    bw.flush();  
    fw.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    三、读写二进制文件

    1、DataInputStream类

    FileInputStream的子类与FileInputStream类结合使用读取二进制文件

    2、DataOutputStream类

    FileOutputStream的子类与FileOutputStream类结合使用写二进制文件

    3、使用 DataInputStream 读二进制文件

    引入相关的类
    import java.io.FileInputStream; 
    import java.io.DataInputStream;
    
    构造数据输入流对象
    FileInputStream fis = new FileInputStream("C:\\HelloWorld.class");
    DataInputStream dis = new DataInputStream(fis);
    
    调用read()方法读取二进制数据
    dis.read();
    
    关闭数据输入流
    dis.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4、使用 DataOutputStream写二进制文件

    引入相关的类
    import java.io.FileOutputStream; 
    import java.io.DataOutputStream;
    
    构造数据输入流对象
    FileOutputStream outFile = new FileOutputStream("C:\\temp.class");
    DataOutputStream out = new DataOutputStream(outFile);
    
    调用read ()方法读取二进制数据
    out.read();
    
    关闭数据输入流
    out.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    四、序列化和反序列化

    1、简介

    序列化是将对象的状态写入到特定的流中的过程
    反序列化则是从特定的流中获取数据重新构建对象的过程

    2、实现序列化

    使用集合保存对象,可以将集合中的所有对象序列化

    序列化的步骤
    实现Serializable接口
    创建对象输出流
    调用writeObject方法将对象写入文件
    关闭对象输出流

    3、实现反序列化

    如果向文件中使用序列化机制写入多个对象,那么反序列化恢复对象时,必须按照写入的顺序读取

    序列化的步骤
    实现Serializable接口
    创建对象输入流
    调用readObject方法读取对象
    关闭对象输入流

    五、总结

    1、BufferedReader和BufferedWriter读写文本文件的优势

    使用FileWriter类与BufferedWriter类 可与提高字符流写文本文件的效率
    使用FileReader类与BufferedReader类可以提高字符流读取文本文件的效率

    2、复制二进制文件使用的流

    使用 DataInputStream 读二进制文件
    使用 DataOutputStream写二进制文件

  • 相关阅读:
    Saas.弹性架构设计思考
    JavaScript 数组
    Hadoop -- 分布式文件系统
    软件的命令安装备份
    如何在aws服务器上部署mysql
    【监控系统】Promethus整合Alertmanager监控告警邮件通知
    GenericServlet、ServletConfig和ServletContext
    spring+vue项目搭建
    python教程:11种字典常见操作
    [AIGC] Kafka解析:分区、消费者组与消费者的关系
  • 原文地址:https://blog.csdn.net/jule_zhou/article/details/126379494