1.了解IO
一个输入流用于从源读取数据。并且,输出流用于将数据写入目标。
System.out是一种输出流。--向显示器控制台输出-
2.InputStream 输入
文件读取 -字节读取-序列化读取
3.OutputStream 输出
OutputStream out = new FileOutputStream("output.txt");
//将字符串转换为字节
byte[] dataBytes = data.getBytes();
//将数据写入输出流
out.write(dataBytes);
System.out.println("数据被写入文件。");
输出-字节输出 输入 -字节返回
4.Read
Reader是抽象类,因此它本身不起作用。但是,其子类可用于读取数据。
这四个类在 Java 中都用于读取字符数据,但有一些区别和适用场景:
-
BufferedReader
:
BufferedReader
是带有缓冲区的字符输入流,用于提供缓冲字符输入,可以一次读取一行字符数据。- 通常与其他字符输入流结合使用,如
FileReader
或InputStreamReader
,以提高读取效率。
java
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
String line = br.readLine(); // 读取一行字符数据
-
InputStreamReader
:
InputStreamReader
是字节流到字符流的桥梁,将字节流转换为字符流。- 它接收一个字节输入流(如
FileInputStream
)作为参数,并将其转换为字符输入流。
java
InputStreamReader isr = new InputStreamReader(new FileInputStream("file.txt"));
int data = isr.read(); // 读取单个字符数据
-
FileReader
:
FileReader
是用来读取文件的字符输入流,继承自InputStreamReader
。- 可以直接用于读取文件中的字符数据。
java
FileReader fr = new FileReader("file.txt");
int data = fr.read(); // 读取单个字符数据
-
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
Writer类提供了由其子类实现的不同方法。 以下是一些方法:
- write(char[] array) - 将指定数组中的字符写入输出流
- write(String data) - 将指定的字符串写入写入器
- append(char c) - 将指定字符插入当前写入器
- flush() - 强制将写入器中存在的所有数据写入相应的目的地
- close() - 关闭写入器
6.FileReader
java.io包的FileReader类可用于从文件中读取数据(以字符为单位)
7.FileWriter
总结
字符流和字节流区别
字符 读取文件内容-是从字节流到字符流的桥梁,它将字节流转换为字符流。
字节 读取图片 视频文件-主要用于读取二进制数据,比如图片、音频、视频等文件。
标签:字符,Java,读取,FileReader,输入输出,写入,IO,数据,字节 From: https://www.cnblogs.com/Agtw/p/18090116