继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JavaIO之字符流学习笔记

亚努人
关注TA
已关注
手记 20
粉丝 36
获赞 349
一、字节字符转换流

字符处理是一次处理一个字符,底层仍然是字节序列。字符流的基本使用与字节流类似。

InputStreamReader:按照编码将字节流解析成字符流
OutputStreamReader:按照编码将字符流转换为字节流
    public static void main(String[] args)throws IOException {
        FileInputStream in = new FileInputStream("D:/Files/test.txt");
        InputStreamReader isr = new InputStreamReader(in,"gbk");

        FileOutputStream out = new FileOutputStream("D:/Files/test2.txt");
        OutputStreamWriter osw = new OutputStreamWriter(out);

        char[] buf = new char[8*1024];
        int c;
        while((c=isr.read(buf, 0, buf.length))!=-1){
            osw.write(buf,0,c);
            osw.flush();
        }
        isr.close();
        osw.close();
    }
二、文件读写流

使用文件读写流FileReader/FileWriter实现上例的代码如下。当FileWriter实例化时,构造参数有一个true,则表示在原文件后追加内容。

    public static void main(String[] args)throws IOException {
        FileReader fr = new FileReader("D:/Files/test.txt");
        FileWriter fw = new FileWriter("D:/Files/test3.txt");
        //FileWriter fw = new FileWriter("D:/Files/test3.txt",true);//文件后追加内容
        char[] buf = new char[2056];
        int c;
        while((c=fr.read(buf, 0, buf.length))!=-1){
            fw.write(buf, 0, c);
            fw.flush();
        }
        fr.close();
        fw.close();
    }
三、字符缓冲流
BufferedReader:读取文件,一次读一行
BufferedWriter/PrintWriter:写文件

使用字符缓冲流时,实例化对象需要一步一步向底层进行构造,而使用PrintWriter时可以直接进行构造。代码如下。

    public static void main(String[] args)throws IOException {
        BufferedReader br = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream("D:/Files/test.txt")));

        BufferedWriter bw = new BufferedWriter(
                new FileWriter("D:/Files/test1.txt"));

        PrintWriter pw = new PrintWriter("D:/Files/test6.txt");

        String line;
        while((line=br.readLine())!=null){
            bw.write(line);
            bw.newLine();//由于不能识别换行,所以要加上换行语句
            bw.flush();

            pw.println(line);
            pw.flush();
        }
        br.close();
        bw.close();
        pw.close();
    }

注:文章根据本站相关课程的学习笔记整理而来,有错误或其他任何问题敬请指正,欢迎共同学习交流!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP