字符流(父类)抽象类

中文文件写入和读取乱码原因:fileinputstram类和fileoutputstream类是字节的读取和写入,一次处理一个字节,而一个中文字符有三个字节,所以会乱码。

FileReader类:实现文件读取,按照字符逐个读取,可以避免中文乱码

FileWriter类:实现文件写入,按照字符逐个读取,可避免中文乱码。

FileReader类:

package com.tiedandan.IO流.字符流;

import java.io.FileInputStream;
import java.io.FileReader;

public class filereadclass {
    public static void main(String[] args) throws Exception {
        FileReader fis = new FileReader("d:\\hello.txt");

        int count = 0;
        while ((count =fis.read())!=-1){
            System.out.print((char)count);//filereader读取时按字符读,不会乱码
        }
        fis.close();
    }
}

FileWriter类:

package com.tiedandan.IO流.字符流;

import java.io.FileWriter;
import java.io.IOException;

public class filewriteclass {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("d:\\hello.txt");
        for (int i = 0; i < 5; i++) {
            fw.write("java世界上最好的语言\r\n");
            fw.flush();
        }
        fw.close();
        System.out.println("执行完毕!");
    }
}

字符流复制文件:

package com.tiedandan.IO流.字符流;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;

/**
 * 用字符流实现文件的复制
 * 只能复制文本文件,不能复制图片或者二进制文件。
 */
public class filecopy {
    public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("d:\\hello.txt");
        FileWriter fw = new FileWriter("d:\\hello2.txt");
        int count = 0;
        while ((count=fr.read())!=-1){
            fw.write(count);
            fw.flush();
        }
        fr.close();
        fw.close();
        System.out.println("执行完毕!");
    }
}

 

posted on 2021-11-24 09:31  张铁蛋666  阅读(69)  评论(0编辑  收藏  举报

导航