Java IO流系列(二)—— 字符流

前言:这篇介绍以大家最熟悉的操作文件的字符输入输出流FileWriter,FileReader为例简单介绍字符流的入门使用方式。
原文出处:http://blog.csdn.net/u014158743/article/details/52665409

为使代码清晰,一律用throws先抛出异常。

文件输出流FileWriter

寄新手:向文本文件中写入数据,因为是文本文件,所以使用字符流,又因为是写入,所以使用字符流中的输出流Writer,又因为是文件,所以使用可以操作文件的字符输出流类。下文同,本系列同。

public static void main(String[] args) throws IOException {
    //1:创建文件输出流对象和被写入数据的文件相关联
    //文件不存在会创建,文件存在会被覆盖
    FileWriter  fw = new FileWriter("temp.txt"); //入门语:与.java同级目录

    //2:使用文件输出流对象向文件中写入数据
    //数据没有写入到文件,写入到流内部的的一个数组,这个数组是一个字节数组,因为要查编码表
    fw.write("abcdef");

       //3:把内部缓冲中的数据写入到文件
    //fw.flush();

    fw.write("gh");//刷完之后可以继续写

    fw.close();//关闭此流,同时会刷新流中的数据

    //fw.write("ww");//流已经关闭,不能继续写入了

}

文件的续写

public static void main(String[] args) throws IOException {
    // 该平台下分隔符(换行)
    final String SEPARATOR = System.getProperty("line.separator");

    FileWriter fw = new FileWriter("temp.txt",true);

    fw.write("ijklmn");

    fw.write(SEPARATOR);

    fw.write("hello");

    fw.close();
}

文件输入流FileReader

public static void main(String[] args) throws IOException
{
    //创建文件读取流的对象和被读取的文件相关联
    FileReader  fr = new FileReader("temp.txt");//被读取的文件需要事先存在

    //1、使用一次读一个字符的功能读取
    int num;
    while((num = fr.read()) != -1) {
        System.out.print((char)num);
    }

    //2、使用数组读取文件
    char[] arr = new char[1024];
    int num = 0;
    while((num = fr.read(arr)) != -1) {
        System.out.print(new String(arr, 0, num));
    }

    fr.close();
}

复制文件小Demo:

//复制一个文件
import java.io.*;
class Demo {
    public static void main(String[] args)throws IOException {
        //创建文件读取流和被复制的文件相关联
        FileReader  fr = new FileReader("temp.txt");

        //创建文件输出流和复制的新文件相关联
        FileWriter fw = new FileWriter("temp_copy.txt");

        char[] arr = new char[1024];
        int num;
        while((num = fr.read(arr)) != -1) {
            fw.write(new String(arr, 0, num));
        }

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

结束语:到这里,相信大家都会了字符流的基本读写,更详细的用法会在后续的文章更新。各位也可以关注我左上角的新浪微博,更新文章我会第一时间发微博通知大家。下篇文章将介绍字符流的缓冲读取流、写入流,欢迎关注。

本系列开启篇:
http://blog.csdn.net/u014158743/article/details/52664986

猜你喜欢

转载自blog.csdn.net/u014158743/article/details/52665409