/** ************Java字节流与字符流 * 1、测试环境:Fedora("in.txt"文件的编码为utf-8,“中”占3个字节) * 2、Linux下如何查看文件编码格式:vim下[:set fileencoding] * 3、以单字节十六进制形式查看文件:od -t x1 in.txt */ /* "in.txt"内容 中abcd中 */ //字节流:read()每次读取1 byte //读3次才能读取1个“中” import java.io.*; class Test { public static void main(String[] args) throws IOException { FileInputStream in = new FileInputStream("in.txt"); FileOutputStream out = new FileOutputStream("out.txt"); int c; for(int i = 0; i < 3; i++) { c = in.read(); System.out.println(c); out.write(c); } in.close(); out.close(); } } //字符流:read()每次读取1 character(Java在这里显得比较“智能”,不管是英文字符(1个字节),还是中文字符(utf-8“中”占3个字节)) import java.io.*; class Test2 { public static void main(String[] args) throws IOException { FileReader in = new FileReader("in.txt"); FileWriter out = new FileWriter("out.txt"); int c; for(int i = 0; i < 1; i++) { c = in.read(); System.out.println(c); out.write(c); } in.close(); out.close(); } } /** * 进一步实验证明,无论是Linux(文本文件默认格式为utf-8),还是Windows(文本文件默认格式为latin1),字符流的read()都是读取1 character,字节流的read()都是读取1 byte */