java IO流三:字符流 FileReader & FileWriter

假如想象 提交于 2019-12-16 03:35:03

在这里插入图片描述

FileReader

package com.company01.IO;
/*
    java.io.Reader;
        java.InputStreamReader;  转换流(字节输入流 ---> 字符输入流)
            java.io.FileReader;   文件字符输入流  只能读取纯文本,字符流可以一次读取一个汉字,而字节流只能读取汉字的一半,字节流容易出现乱码
*/
import java.io.*;

public class FileReadrTest01 {
    public static void main(String[] args) {

        FileReader fr = null;
        try{
            fr = new FileReader("test01");

            // 开始读
            char[] chars = new char[215];  // 1KB

            int temp = 0;

            while((temp=fr.read(chars)) != -1){
                // 将char数组有效部分转换成字符串
                System.out.print(new String(chars, 0, temp));
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            if(fr != null){
                try{
                    fr.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}

FileWriter

package com.company01.IO;
/*
    java.io.Write;
        java.io.OutputStreamWriter;  转换流(字节输入流 ---> 字符输入流)
            java.io.FileWriter;   文件字符输入流
*/
import java.io.*;

public class FileWriterTest01 {
    public static void main(String[] args) throws Exception{

        // 创建文件字符输入流
        //FileWriter fw = new FileWriter("test01");    // 覆盖
        FileWriter fw = new FileWriter("test01", true);  // 追加

        // 开始写
        fw.write("中国我爱你");
        fw.write("\n");
        // 将char数组的一部分写入
        char[] chars = {'我','是','中','国','人','!'};

        fw.write(chars, 0, 5);

        // 刷新
        fw.flush();

        // 关闭
        fw.close();
    }
}

使用FileReader & FileWriter完成文件复制

package com.company01.IO;
/*
    文件复制
    只能复制纯文本文件
*/
import java.io.*;

public class CopyTest02 {
    public static void main(String[] args) throws Exception{

        FileReader fr = new FileReader("test01.txt");
        FileWriter fw = new FileWriter("test02.txt");

        // 一边读一边写
        char[] chars = new char[512];  // 1KB

        int temp = 0;
        while((temp=fr.read(chars)) != -1){
            // 写
            fw.write(chars, 0, temp);
        }

        fw.flush();
        fr.close();
        fw.close();
    }
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!