javaSE.I/O-字符流


流的概念和分类

字节流

字符流

字符编码

  • ISO-8859-1 收录除ASCII外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号,1个字节;
  • UFT-8 针对Unicode码表的可变长度字符编码,万国码,1、2、3个字节;
  • GB2312 简体中文,1、2个字节;
  • GBK 简体中文,扩充,1、2个字节;
  • BIG5 繁体中文,台湾;
    【注意】当编码方式和解码方式不一致时,会出现乱码

字符流的父类

Reader/Writer

文件字符流

FileReader
int read(char[] c) //从流中读取多个字符,将读到的内容存入C数组,返回之际读到的字符数;如果到达文件的尾部,则返回-1;
FileWriter
void write(String str) //一次写出多个字符,将str中所有字符,写出到输出流;

/**
 * 演示文件字符流FileReader、FileWriter
 */
public class FileReaderWriter {
    public static void main(String[] args) throws Exception{
        //1.创建文件字符输入流
        FileReader fr = new FileReader("d:\\hello.txt");
        //2.1 读取单个字符
//        int data=0;
//        while((data=fr.read())!=-1){
//            System.out.println((char)data);
//        }
        //2.2 读取多个字符
        char[] buf = new char[1024];
        int count=0;
        while ((count=fr.read(buf))!=-1){
            System.out.println("读取的字符:"+new String(buf,0,count));
        }
        //3.关闭流
        fr.close();

        //1.创建文件字符流
        FileWriter fw = new FileWriter("d:\\write.txt");
        //2.写出
        for (int i = 0; i <3 ; i++) {
            fw.write("Java是最好的编程语言\r\n");
            fw.flush();
        }
        //3.关闭
        fw.close();
        System.out.println("写出完毕");
    }
}

字符缓冲流

  • 高效读写;
  • 支持输入换行符;
  • 可一次写一行、读一行;
    BufferedReader/BufferedWriter
/**
 * 演示缓冲字符流BufferedReader、BufferedWriter
 */
public class BufferedReaderWriter {
    public static void main(String[] args) throws Exception{
        //1.创建缓冲字符流
        FileReader fr = new FileReader("d:\\write.txt");
        BufferedReader br = new BufferedReader(fr);
        //2.1 读取,字符数组
        char[] buf = new char[1024];
        int count=0;
        int num=0;
        while ((count=br.read(buf))!=-1){
            System.out.println(new String(buf,0,count));
            num++;
            System.out.println(num++);
        }
        //2.2 读取,读一行
        String line=null;
        num=0;
        while((line=br.readLine())!=null){
            System.out.println("第"+(++num)+"行:"+line);
        }
        //3.关闭流
        br.close();

        //1.创建流
        FileWriter fw = new FileWriter("d:\\buffer.txt");
        BufferedWriter bw = new BufferedWriter(fw);
        //2.写出
        for (int i = 0; i <3; i++) {
            bw.write("好好学习,天天向上");
            bw.newLine();//写入一个换行符,由操作系统决定
            bw.flush();
        }
        //关闭流
        bw.close();
        System.out.println("写出完毕");
    }
}

File类

相关