字节流和字符流
FileInputStream   fi   =   new   FileInputStream( "c:/cmd.txt "); 
 while((temp=fi.read())!=-1) 
 System.out.print((char)temp);   
 InputStreamReader   ir   =   new   InputStreamReader((new   FileInputStream( "c:/cmd.txt "))); 
 int   temp; 
 System.out.print(ir.getEncoding()); 
 while((temp=ir.read())!=-1) 
 System.out.print((char)temp);   
 cmd.txt里面是英文文本   
 既然有字节流和字符流的区别 
 字节流是以一个字节为单位,而字符流是2个字节为单位的 
 为什么这两段程序的read输出都一样? 
 下面的不是要每次读出2个字节的内容吗? 
 ———————————————————— 
 网上摘来的   老实说我不是很明白其中的具体编码细节,只知道能这样用,知道的讲下,谢谢!!!
------解决方案--------------------你加点中文就看出来了
------解决方案--------------------字符流并非以2个字节为单位,而是根据不同的编译,不同的字符有不同的字节数   
 对于我们常用的GBK中,英文是占用1个字节,中文是2个 
 对于UTF-8,英文是1个,中文是3个 
 对于Unicode,英文中文都是2个
------解决方案--------------------应该是需要的吧,不过最好是能够处理两种编码,就是自己程序去判断,如果你在开发文档中写上,对用户岂不是有点束缚。对于中文乱码可以getBytes();转化一下 
------解决方案--------------------因为有这样的代码:   
 InputStreamReader ir = new InputStreamReader((new FileInputStream( "c:/cmd.txt "))); 
 System.out.print(ir.getEncoding());   
 猛一看还以为InputStreamReader 可以动态识别字符编码, 
 试了一下,发现ir.getEncoding()永远是GBK,和cmd.txt文件本身的编码没关系   
 如果cmd.txt保存成UTF-8,这段程序就是乱码 
 ........
------解决方案--------------------不知道有什么办法可以自动识别文本文件的编码,   
 比如,Windows的记事本就可以做到,应该也是可以自动识别的
------解决方案--------------------果然,移动正常,联通乱码。。哈     
 这也说明记事本不止根据文件头的字符判断。   
 用记事本保存的UTF-8文件文件头是:EF BB BF   
 手工把文件头的这3个字节删除,记事本还能识别成UTF-8,而不会误认为是GBK
------解决方案--------------------跟操作系统使用的编码系统有关,java会在编译时自动寻找操作系统用的字符码,简体中文的是GBK