开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情
字符输入
FileReader:文件字符输入流,以内存为基准,把磁盘文件的数据以字符的形式读入到内存,读取文本文件内容到内存中去
构造器:
public FileReader(File file)
:创建一个字符输入流与源文件对象接通。public FileReader(String filePath)
:创建一个字符输入流与源文件路径接通。
方法:
public int read()
:读取一个字符的编号返回,读取完毕返回 -1public int read(char[] buffer)
:读取一个字符数组,读取多少个就返回多少个,读取完毕返回 -1
结论:
- 字符流一个一个字符的读取文本内容输出,可以解决中文读取输出乱码的问题,适合操作文本文件,但是一个一个字符的读取文本内容性能较差
- 字符流按照字符数组循环读取数据,可以解决中文读取输出乱码的问题,而且性能也较好
字符流不能复制图片,视频等类型的文件。字符流在读取完了字节数据后并没有直接往目的地写,而是先查编码表,查到对应的数据就将该数据写入目的地。如果查不到,则码表会将一些未知区域中的数据去 map 这些字节数据,然后写到目的地,这样的话就造成了源数据和目的数据的不一致。
public class FileReaderDemo01{//字符
public static void main(String[] args) throws Exception {
// 创建一个字符输入流管道与源文件路径接通
Reader fr = new FileReader("Demo/src/test.txt");
int ch;
while((ch = fr.read()) != -1){
System.out.print((char)ch);
}
}
}
public class FileReaderDemo02 {//字符数组
public static void main(String[] args) throws Exception {
Reader fr = new FileReader("Demo/src/test.txt");
char[] buffer = new char[1024];
int len;
while((len = fr.read(buffer)) != -1) {
System.out.print(new String(buffer, 0 , len));
}
}
}
字符输出
FileWriter:文件字符输出流,以内存为基准,把内存中的数据按照字符的形式写出到磁盘文件中去
构造器:
public FileWriter(File file)
:创建一个字符输出流管道通向目标文件对象(覆盖数据管道)public FileWriter(String filePath)
:创建一个字符输出流管道通向目标文件路径public FileWriter(File file, boolean append)
:创建一个追加数据的字符输出流管道通向文件对象(追加数据管道)public FileWriter(String filePath, boolean append)
:创建一个追加数据的字符输出流管道通向目标文件路径
方法:
public void write(int c)
:写一个字符出去public void write(char[] buffer)
:写一个字符数组出去public void write(String c, int pos, int len)
:写字符串的一部分出去public void write(char[] buffer, int pos, int len)
:写字符数组的一部分出去fw.write("\r\n")
:换行
读写字符文件数据建议使用字符流
Writer fw = new FileWriter("Demo/src/test.txt");
fw.write(97); // 字符a
fw.write('b'); // 字符b
fw.write("Java是最优美的语言!");
fw.write("\r\n");
fw.close;