JavaSE I/O流 字符流

简介: JavaSE I/O流 字符流

字符流

字符输入

FileReader:文件字符输入流,以内存为基准,把磁盘文件的数据以字符的形式读入到内存,读取文本文件内容到内存中去

构造器:

  • public FileReader(File file):创建一个字符输入流与源文件对象接通。
  • public FileReader(String filePath):创建一个字符输入流与源文件路径接通。

方法:

  • public int read():读取一个字符的编号返回,读取完毕返回 -1
  • public 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;

目录
相关文章
|
8月前
|
Java 数据处理
JavaSE I/O流 字符流
Java8 快速实现List转map 、分组、过滤等操作
38 2
|
6月前
|
存储 缓存 Java
JavaSE—IO流之字符流与字节流
JavaSE—IO流之字符流与字节流
|
8月前
|
存储 自然语言处理 Java
java缓冲流、转换流、序列化流、打印流
java缓冲流、转换流、序列化流、打印流介绍
|
8月前
day17-缓冲流&转换流&序列化流&打印流&Properties(三)
day17-缓冲流&转换流&序列化流&打印流&Properties
62 1
|
8月前
|
存储 自然语言处理 Java
day17-缓冲流&转换流&序列化流&打印流&Properties(二)
day17-缓冲流&转换流&序列化流&打印流&Properties
71 1
|
8月前
|
存储
day17-缓冲流&转换流&序列化流&打印流&Properties(一)
day17-缓冲流&转换流&序列化流&打印流&Properties
86 0
|
8月前
IO流:字符输入流Reader的超详细用法及底层原理
IO流:字符输入流Reader的超详细用法及底层原理
110 0
|
存储 Java API
【JavaSE专栏72】字符输入流Reader,用于读取字符数据的抽象类
【JavaSE专栏72】字符输入流Reader,用于读取字符数据的抽象类
111 0
|
移动开发 Java API
JavaSE I/O流 字节流
JavaSE I/O流 字节流
61 0
|
存储 Java C++
Java开发——28.I/O流_字符流和字节流
Java中I/O操作主要是指使用java.io包下的内容,进行输入和输出操作;输入叫做读取数据,输出叫做写出数据。主要操作文件内容,结合前面所学的File类,我们可以灵活的读取和写出文件。
Java开发——28.I/O流_字符流和字节流