日期:2014-05-20  浏览次数:20685 次

我用字符流读二进制文件....我知道应该用字节流.但是我觉得字符读小文件应该也可以可是失败了为什么
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进制读取吗?
可字符流也是按照字节读取啊....
---------------
先不要带着以往错误的认识去看资料.只当自己什么都不懂,然后从最基础的资料开始看起.

你的知识结构,现在是存在巨大的底座上的缺陷,盖得越高越危险,容易塌方-----也就是,当你和一些人或同事谈起上层的东西,发现你连一些基础都不懂,或者由于错误的理解造成差之毫厘谬以千里的效果,那么你这个人的技术形象就彻底毁了.

学电脑,最好沉下心从金字塔底座学起,一层学好再进一层.