Java(字符流)

三.字符流

1.字符输入流Reader(超类)

1)概念:
    java.io.Reader 字符输入流(顶层父类)

2)子类共性的方法:
    int read(); 读一个字符
    int read(char[] cbuf); 将字符读入数组。
    abstract int read(char[] cbuf, int off, int len); 将字符读入数组的一部分。
    abstract void close(); 关闭流并释放与之相关联的任何系统资源。

1.1 FileReader(子类)(实现类)

1)概念:
    java.io.FileReader extends InputStreamReader  extends Reader
    FileReader :文件字符输入流
      作用:把硬盘文件中的数据以字符的方式读取到内存中

2)构造方法:
    FileReader(File file) 创建一个新的 FileReader ,给出 File读取。
    FileReader(String fileName) 创建一个新的 FileReader ,给定要读取的文件的名称。
     参数:读取文件的数据源
        String fileName:文件的路径
        File file:文件

3)字符输入流的使用步骤:
    1.创建FileReader对象,构造方法中绑定要读取的数据源
    2.使用FileReader对象中的方法read读取文件
    3.释放资源

4)代码实现:
            FileReader fr = new FileReader("G:\\a.txt");
            //read()读取一个字符
    //        int len=0;
    //        while ((len=fr.read())!=-1){
    //            System.out.println((char)len);
    //        }
            //一次读取多个字符并读入数组
            char[] chars = new char[1024];//存储读取到的多个字符
            int len=0;//记录每次读取的有效字符个数
            while ((len=fr.read(chars))!=-1){
                System.out.println(new String(chars,0,len));//字符数组转换为字符串
            }

2.字符输出流Writer(超类)

1)概念:
    java.io.Writer 字符输出流(顶层父类)

2)子类共性方法:
    abstract void close() 关闭流,先刷新。  
    abstract void flush() 刷新流。  

    void write(char[] cbuf) 写入一个字符数组。  
    abstract void write(char[] cbuf, int off, int len) 写入字符数组的一部分。  
    void write(int c) 写一个字符  
    void write(String str) 写一个字符串  
    void write(String str, int off, int len) 写一个字符串的一部分。

2.1 FileWriter(子类)(实现类)

1)概念:
    java.io.FileWriter extends OutputStreamWriter extends Writer
    FileWriter :文件字符输出流
    作用:把内存中字符数据写入到文件中

2)构造方法:
    FileWriter(String fileName)构造一个给定文件名的FileWriter对象。 
    FileWriter(File file) 给一个File对象构造一个FileWriter对象。
    参数:写入数据的目的地
         String fileName:文件的路径
         File file:文件对象

3)字符输出流的使用步骤:
    1.创建FileWriter对象,构造方法中绑定要写入数据的目的地
    2.使用FileWriter中的方法writer,把数据写入到内存缓冲区中(字符转换为字节过程)
    3.使用FileWriter中的方法flush,把内存缓冲区中的数据,刷新到文件中
    4.释放资源

4)代码实现:
     FileWriter fw = new FileWriter("G:\\a.txt");
            fw.write(97);//写入单个字符

            fw.write("hello");//写个字符串

             char[] c ={'a','b','c'};
            fw.write(c);//写入字符数组

            fw.flush();//刷新流
            fw.close();//释放流

5)flush方法和close方法的区别:
    flush:刷新缓冲区,流对象可以继续使用
    close:先刷新缓冲区,然后通知系统释放资源.流对象不可以再被使用了

6)续写和换行:
    1.续写:(对原文件续写)
        FileWriter(File file, boolean append);append为true时,表示追加写
        FileWriter(String fileName, boolean append); append为true时,表示追加写
    2.换行:
          windows:\r\n
          linux:/n
          mac:/r
posted @ 2021-03-23 20:26  一名初学者  阅读(108)  评论(0)    收藏  举报