字符流

1      字符输入流Reader

l  read():读取单个字符并返回

l  read(char[]):将数据读取到数组中,并返回读取的个数。

public class Demo01 {
    public static void main(String[] args) throws IOException {
        //明确数据源
        FileReader fr=new FileReader("D:\test\s.txt");
        //一个字符一个字符的读
        /*int len=0;
        while((len=fr.read())!=-1){
            System.out.print((char)len+" ");
        }*/    
        //一个字符数组的读
        char[]ch=new char[2];
        int len=0;
        while((len=fr.read(ch))!=-1){
            System.out.println(new String(ch,0,len));
        }
        //释放资源
        fr.close();
    }
}

 2 字符输出流Writer

flush():将流中的缓冲区缓冲的数据刷新到目的地中,刷新后,流还可以继续使用。

close():关闭资源,但在关闭前会将缓冲区中的数据先刷新到目的地,否则丢失数据,然后在关闭流。流不可以使用。如果写入数据多,一定要一边写一边刷新,最后一次可以不刷新,由close完成刷新并关闭。

public class Demo02 {
    public static void main(String[] args) throws IOException {
        // 明确目的地
        FileWriter fw = new FileWriter("D:\test\b.txt");
        // 写一个字符
        fw.write(100);
        fw.flush();
        //写字符数组
        char[]ch={'你','是','啥','a'};
        fw.write(ch,2,2);
        fw.write("你好啊".toCharArray());
        fw.write("你好啊");
        fw.flush();
        // 释放资源
        fw.close();
    }
}

3  字符流复制文本

public class Demo03 {
    public static void main(String[] args) throws IOException {
        //文件复制
        //明确数据源
        FileReader fr=new FileReader("D:\test\b.txt");
        //明确目的地
        FileWriter fw=new FileWriter("D:\test\e\b.txt");
        //开始复制
        char []ch=new char[1024];
        int len=0;
        while((len=fr.read(ch))!=-1){
            fw.write(ch,0,len);
            fw.flush();
        }
        fr.close();
        fw.close();
    }
}
原文地址:https://www.cnblogs.com/quanjunkang/p/10655390.html