字符流

字符输入流

/*
 * FileInputStream和FileOutputStream是字节流
 * 字节流的祖宗类(基类)InputStream和OutputStream
 *
 * 字符流:相对于字节流每次需要操作字节数组而言,字符流就直接操作字符
 * 字符流的祖宗类:Reader和Writer
 * 计算机底层只有字节流
 * Reader:
 *   常用的子类:FileReader extends InputStreamReader extends Reader
 *
 * */

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;

public class Demo01 {
    public static void main(String[] args) {
        FileReader fileReader = null;
        try {
            fileReader = new FileReader("C:\\Users\\GzhAnkh\\Desktop\\FileApiDemo03\\mkdij创建的目录\\FileApiDemo05.txt");
            /*
             * read(char[] c);返回值代表读取到的字符的实际个数,如果为-1就表示读完了
             * */
            char[] chars = new char[10];
            int length;
            while ((length = fileReader.read(chars)) != -1) {
                System.out.println(Arrays.toString(chars));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(fileReader!=null)
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

字符输出流

/*
 * 字符流只能操作 文本文件!!
 * * */

public class Demo01 {
    public static void main(String[] args) {
        FileReader fileReader = null;
        FileWriter fileWriter = null;
        try {
            fileReader = new FileReader("C:\\Users\\GzhAnkh\\Desktop\\FileApiDemo03\\mkdij创建的目录\\FileApiDemo05.txt");
            fileWriter = new FileWriter("C:\\Users\\GzhAnkh\\Desktop\\FileApiDemo03\\mkdij创建的目录\\FileApiDemo06.txt");
            char[] chars = new char[10];
            int length;
            while ((length = fileReader.read(chars)) != -1) {
                fileWriter.write(chars, 0, length);
                /*
                 * fileWriter.write(chars,0,length);
                 * length的作用:
                 *      如果不写length,读入到数组其实是一次覆盖,数据不够多的时候,就会覆盖不完整,
                 *      然后在写入的时候就会把整个数组写进去,然后就会多写入没有覆盖完的数据
                 * */
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileWriter.flush();
                /*
                 * 缓冲区(8kb)满了才会写入,没满就不会写入,想写入就要调用flush()方法,或者调用close方法
                 * */
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (fileWriter!=null)
                    fileWriter.close();
                if(fileReader!=null)
                    fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
上一篇:采字符输出流FileWriter,从键盘上输入数值,并存入文件中


下一篇:Java-IO流系列-FileReader与FileWriter