Demo.java:
package cn.xxx.demo; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; /* * 转换流 (字节流转成字符流) (可以指定编码表) * java.io.InputStreamReader 继承 Reader (参考Reader子类FileReader的方法) * 字节流向字符的桥梁,将字节流转成字符流 (可以指定编码集) * * 技巧: OuputStreamWriter写文件 (可以指定编码集) * InputStreamReader读取文件 (可以指定编码集) * * OuputStreamWriter(OuputStream out)所有字节输出流 * InputStreamReader(InputStream in) 接收所有的字节输入流 * 可以传递的字节输入流: FileInputStream * InputStreamReader(InputStream in,String charsetName) // 可以根据指定编码表构建转换流。 * * InputStreamReader 有个子类, FileReader (用的是系统默认的编码表) */ public class Demo { public static void main(String[] args) throws IOException { //readGBK(); readUTF(); } public static void readUTF()throws IOException{ //创建字节输入流,传递文本文件(字符) FileInputStream fis = new FileInputStream("c:\\utf.txt"); InputStreamReader isr = new InputStreamReader(fis,"UTF-8");//根据字节输入流构建转换流对象 (可以指定编码集,默认系统编码) char[] ch = new char[1024]; // 缓冲数组 int len = isr.read(ch); System.out.println(new String(ch,0,len)); isr.close(); } public static void readGBK()throws IOException{ //创建字节输入流,传递文本文件(字符) FileInputStream fis = new FileInputStream("c:\\gbk.txt"); InputStreamReader isr = new InputStreamReader(fis); //根据字节输入流构建转换流对象 (可以指定编码集,默认系统编码) char[] ch = new char[1024]; // 缓冲数组 int len = isr.read(ch); System.out.println(new String(ch,0,len)); isr.close(); } }