文件字符流(FileReader/FileWriter)

       文件字符流(FileReader/FileWriter)针对文件字符的操作,不同于文件字节流(FileInputStream/FileOutputStream)。它是针对字符来进行操作的,因此他在处理纯字符集(纯文本)时十分的方便。而文件字节流能够处理音频,视频等等除纯文本以外的文件类型,因为他们是以字节为单位的。但是文件字符流不能够处理字节,它只能处理以字符为单位的文件。因此他不能处理音频,视频等以字节为单位的文件。

    一.文件字符输入流(FileReader)

       文件字符输入流是将文件中的字符读取到程序中。

       文件字符流的操作步骤与文件字节流一样:

       1.创建源

       2.选择流

       3.具体操作

       4.释放资源

       以文件字符流操作纯文本文件,可以很好的解决乱码的问题。具体代码如下:

import java.io.*;

/**
 * 测试Reader(对字符进行操作)
 * 字符数组-->字符串
 * Reader:read()
 */
public class TestReader {
    public static void main(String[] args) {
        //创建源
        File file = new File("abc.txt");
        //选择流
        Reader reader = null;
        try {
            reader = new FileReader(file);
            //操作
            char[] flush = new char[1024];   //缓冲容器  InputStream:byte[](字节数组)  Reader:char[](字符数组)
            int len = -1;                 //接收长度
            try {
                while ((len = reader.read(flush))!=-1){
                    //字符数组-->字符串
                    String str = new String(flush,0,len);
                    System.out.print(str);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }finally {
            try {
                if (reader!=null){
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

       以字符数组为单位进行操作,因此定义读取的字符数组char[],每次读取1024个字符,然后转化成字符串(String str = new String(flush,0,len))在进行写出。

    二.文件字符输出流(FileWriter)

       文件字符输出流是将程序中的字符串以字符形式写出到文件中去。具体代码如下:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

/**
 * 测试Writer(对字符进行操作)
 * 字符串-->字符数组
 */
public class TestWriter {
    public static void main(String[] args) {
        //创建源
        File file = new File("dest.txt");
        //选择流
        Writer writer = null;
        try {
            writer = new FileWriter(file,true);
            //操作
            //写法一
//            String str = "问君能有几多愁?恰似一江春水向东流。";
//            //字符串-->字符数组
//            char[] datas = str.toCharArray();
//            writer.write(datas,0,datas.length);
            //写法二
//            String str = "问君能有几多愁?恰似一江春水向东流。";
//            writer.write("\t"+str);
            //写法三
            String str = "\n问君能有几多愁?恰似没穿秋裤遇寒流。";
            String str1 = "\n笑渐不闻声渐悄,多情却被无情恼";
            writer.append(str).append(str1);
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (writer!=null){
                writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

       FileWriter是将字符串转化为字符数组(char[] datas = str.toCharArray())然后进行写出,如果进行多个字符串的写出,可以使用writer.append()进行追加,这样可以一次性写出多条字符串语句到文件中。

你可能感兴趣的:(JAVA,IO流,JavaSE,适合爱技术的小白,良心干货,JavaSE,IO流)