我用字符流读二进制文件....我知道应该用字节流.但是我觉得字符读小文件应该也可以可是失败了为什么
public   static   void   main(String[]   args)   throws   Exception   { 
                         File   _file   =   new   File( "C:/bg1.jpg "); 
                         File   _fileO   =   new   File( "C:/bg2.jpg ");   
                         FileReader   fi   =   new   FileReader(_file); 
                         FileWriter   fo   =   new   FileWriter(_fileO);                           
                         BufferedReader   br   =   new   BufferedReader(fi); 
                         BufferedWriter   bw   =   new   BufferedWriter(fo);                           
                         String   str   =   br.readLine(); 
                         while   (str   !=   null)   { 
                                     bw.write(str); 
                                     str   =   br.readLine(); 
                         } 
                         bw.close(); 
                         br.close(); 
                         System.out.println( "End "); 
             }
------解决方案--------------------没什么为什么。即使文本文件,你用BufferedReader也会出现问题何况binary.   
 字节流和字符流的区别,不再于内容的长度大小,而在于读写的时候,前者是按照byte,而后者是在前者的基础上,根据指定或者系统默认的编码,1-n byte-> 1 char。   
 如果字符流能完全取代字节流,那么这个世界上为什么还要继续存在字节流呢。     
 附带举个文本文件失败例子   
 源文件 
 abc\n 
 123\r\n 
 xyz   
 共3行,BufferedReader/Writer之后 
 abc\r\n 
 123\r\n 
 xyz\r\n
------解决方案--------------------我就这里不明白...看了一些资料越来越乱... 
 字节流是按照16进制读取吗? 
 可字符流也是按照字节读取啊.... 
 --------------- 
 先不要带着以往错误的认识去看资料.只当自己什么都不懂,然后从最基础的资料开始看起.   
 你的知识结构,现在是存在巨大的底座上的缺陷,盖得越高越危险,容易塌方-----也就是,当你和一些人或同事谈起上层的东西,发现你连一些基础都不懂,或者由于错误的理解造成差之毫厘谬以千里的效果,那么你这个人的技术形象就彻底毁了.   
 学电脑,最好沉下心从金字塔底座学起,一层学好再进一层.