Java 基础IO 输入输出流3

1.了解IO

一个输入流用于从源读取数据。并且,输出流用于将数据写入目标。

System.out是一种输出流。--向显示器控制台输出-

2.InputStream 输入

Java InputStream子类是FileInputStream,ByteArrayInputStream和ObjectInputStream。

文件读取 -字节读取-序列化读取

3.OutputStream 输出

Java OutputStream的子类是FileOutputStream,ByteArrayOutputStream和ObjectOutputStream。

OutputStream out = new FileOutputStream("output.txt");

            //将字符串转换为字节
            byte[] dataBytes = data.getBytes();

            //将数据写入输出流
            out.write(dataBytes);
            System.out.println("数据被写入文件。");

输出-字节输出 输入 -字节返回

4.Read

Reader是抽象类,因此它本身不起作用。但是,其子类可用于读取数据。

Java Reader的子类是BufferedReader,InputStreamReader,FileReader和StringReader。

这四个类在 Java 中都用于读取字符数据,但有一些区别和适用场景:

  1. BufferedReader
    

    • BufferedReader 是带有缓冲区的字符输入流,用于提供缓冲字符输入,可以一次读取一行字符数据。
    • 通常与其他字符输入流结合使用,如 FileReaderInputStreamReader,以提高读取效率。
java
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line = br.readLine(); // 读取一行字符数据
  1. InputStreamReader
    

    • InputStreamReader 是字节流到字符流的桥梁,将字节流转换为字符流。
    • 它接收一个字节输入流(如 FileInputStream)作为参数,并将其转换为字符输入流。
java
InputStreamReader isr = new InputStreamReader(new FileInputStream("file.txt"));
int data = isr.read(); // 读取单个字符数据
  1. FileReader
    

    • FileReader 是用来读取文件的字符输入流,继承自 InputStreamReader
    • 可以直接用于读取文件中的字符数据。
java
FileReader fr = new FileReader("file.txt");
int data = fr.read(); // 读取单个字符数据
  1. StringReader
    

    • StringReader 是一个字符输入流,从字符串中读取字符数据。
    • 主要用于读取内存中的字符串数据,而不是外部文件中的数据。
java
StringReader sr = new StringReader("Hello, World!");
int data = sr.read(); // 读取单个字符数据

总结:

  • BufferedReader 用于缓冲字符输入,通常与其他字符输入流结合使用;
  • InputStreamReader 是字节流到字符流的转换器;
  • FileReader 用于读取文件中的字符数据;
  • StringReader 用于读取内存中的字符串数据。

根据具体的需求和数据来源选择合适的类来读取字符数据。

  • ready() - 检查Reader是否准备好读取
  • read(char[] array) - 从流中读取字符并存储在指定的数组中
  • read(char[] array, int start, int length)- 从流中读取length相等的字符数,并从start开始存储在指定的数组中
  • mark() - 标记流中已读取数据的位置
  • reset() - 重置流。如果流已被标记,然后尝试进行标记,以重新定位。如果该流未被标注,然后尝试将其复位在适当的特定流的一些方法,例如通过将其重新定位到其起始点。
  • skip() -从流中丢弃指定数量的字符

5.Writer

Java Writer的子类是BufferedWriter,OutputStreamWriter,FileWriter和StringWriter。

Writer类提供了由其子类实现的不同方法。 以下是一些方法:

  • write(char[] array) - 将指定数组中的字符写入输出流
  • write(String data) - 将指定的字符串写入写入器
  • append(char c) - 将指定字符插入当前写入器
  • flush() - 强制将写入器中存在的所有数据写入相应的目的地
  • close() - 关闭写入器

6.FileReader

java.io包的FileReader类可用于从文件中读取数据(以字符为单位)

FileReader是InputStreamReader的子类,而InputStreamReader是Java Reader的子类。

7.FileWriter

FileWriter是OutputStreamWriter的子类,而OutputStreamWriter是Java Writer的子类。

总结

字符流和字节流区别

字符 读取文件内容-是从字节流到字符流的桥梁,它将字节流转换为字符流。

字节 读取图片 视频文件-主要用于读取二进制数据,比如图片、音频、视频等文件。

posted @ 2024-03-22 17:19  逆向狗  阅读(5)  评论(0编辑  收藏  举报