字符流

字符流:

  Java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)。

  文本是byte byte byte的数据序列。

  文本文件是文本(char)序列按照某种编码方案(UTF-8,UTF-16BE,GBK)序列化为byte的存储结果。

  字符流(Reader  Writer)操作的是文本文件。

  字符的处理:一次处理一个字符,字符的底层依然是基本的字节序列。

  字符流的基本实现:

    InputStreamReader完成byte流解析为char流,按照编码解析。

    OutputStreamWriter提供char流到byte流,按照编码处理。

  也可以用FileReader FileWriter。 BufferedReader BufferedWriter PrintWriter进行读写。

  不同于字节流,字符流面对的是字符,操作的是字符数组,返回的也是字符char,但无论是方法 还是参数 和字节流都大同小异,它们本质是一样的。

  如果读写二进制文件,mp3 jpg等尽量使用BufferInputStream BufferOutputStream

  如果读写文本文件,尽量使用BufferReader PrintWriter.

package com.zhao.charStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * InputStreamReader and OutputStreamWriter Demo
 * 
 * @author admin
 *
 */
public class IsrAndOswDemo {

    public static void main(String[] args) throws IOException {
//        File file = new File("D:" + File.separator + "wang.txt");
        File file=new File("demo/wang.txt");
        FileInputStream fileInputStream = new FileInputStream(file);
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
        int c;
        while ((c = inputStreamReader.read()) != -1) {
            System.out.print((char) c);
        }
        System.out.println();
        char[] chars = new char[8 * 1024];

//        inputStreamReader.read(chars, 0, chars.length);
//        String str = new String(chars, 0, chars.length);
//        System.out.print(str);

        inputStreamReader.close();
        fileInputStream.close();
    }

}
package com.zhao.charStream;

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

/**
 * FileReader and FileWriter Demo
 * @author admin
 *
 */
public class FrAndFwDemo {

    public static void main(String[] args) throws IOException {
        FileReader fileReader=new FileReader("D:/wang.txt");
        FileWriter fileWriter=new FileWriter("D:/zhao.txt",true);
        
        char[] cbuf=new char[8*1024];
        fileReader.read(cbuf,0,cbuf.length);
        fileWriter.write(cbuf, 0, cbuf.length);
        fileWriter.flush();
        
        fileReader.close();
        fileWriter.close();
    }

}
package com.zhao.charStream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * BufferedReader and BufferedWriter or PrintWriter Demo
 * @author admin
 *
 */
public class BrAndBwOrPwDemo {
    public static void main(String[] args) throws IOException {
        //对文件进行读写操作
        FileReader in=new FileReader("D:/wang.txt");
        BufferedReader bufferedReader=new BufferedReader(in);
        FileWriter out=new FileWriter("D:/zhao.txt");
//        BufferedWriter bufferedWriter=new BufferedWriter(out);
        PrintWriter printWriter=new PrintWriter(out);
        
        String str;
        while((str=bufferedReader.readLine())!=null){
            System.out.print(str); //一次读一行,并不识别换行
//            bufferedWriter.write(str);
//            //单独写出换行操作
//            bufferedWriter.newLine();
//            bufferedWriter.flush();
            printWriter.println(str);
        }
        
        bufferedReader.close();
        printWriter.close();
//        bufferedWriter.close();
    }
}
原文地址:https://www.cnblogs.com/zhao307/p/5368382.html