欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java IO流三:字符流 FileReader & FileWriter

程序员文章站 2024-03-05 15:09:00
...

java IO流三:字符流 FileReader & FileWriter

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();
    }
}

相关标签: Java