这些天,研究了下java IO与编码相关的问题,希望和大家探讨一下,欢迎拍砖,共同提高。
可以转载,但是请表明原作者 mubing_s。
首先我们都知道,java IO 的输入流顶层类有两个: java.io.Reader(字符流) 和 java.io.InputStream(字节流),本文要做的是深入细节来解析字符流和字节流在处理文本读入时到底是怎么做的。
先请移步看个小代码:
- package learn;
- import java.io.*;
- class Go{
- public static void main(String args[]) throws FileNotFoundException, IOException{
- FileReader fr = new FileReader("xx.txt");
- //System.out.println(fr.getEncoding());
- int num;
- while((num = fr.read()) != -1){
- System.out.println(Integer.toHexString(num));
- }
- fr.close();
- System.out.println("--------------------");
- int get_num;
- FileInputStream fis = new FileInputStream("xx.txt");
- while((get_num = fis.read()) != -1){
- System.out.println(Integer.toHexString(get_num));
- }
- fis.close();
- }
- }
package learn; import java.io.*; class Go{ public static void main(String args[]) throws FileNotFoundException, IOException{ FileReader fr = new FileReader("xx.txt"); //System.out.println(fr.getEncoding()); int num; while((num = fr.read()) != -1){ System.out.println(Integer.toHexString(num)); } fr.close(); System.out.println("--------------------"); int get_num; FileInputStream fis = new FileInputStream("xx.txt"); while((get_num = fis.read()) != -1){ System.out.println(Integer.toHexString(get_num)); } fis.close(); } }