我用字符流读二进制文件....我知道应该用字节流.但是我觉得字符读小文件应该也可以可是失败了为什么
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进制读取吗?
可字符流也是按照字节读取啊....
---------------
先不要带着以往错误的认识去看资料.只当自己什么都不懂,然后从最基础的资料开始看起.
你的知识结构,现在是存在巨大的底座上的缺陷,盖得越高越危险,容易塌方-----也就是,当你和一些人或同事谈起上层的东西,发现你连一些基础都不懂,或者由于错误的理解造成差之毫厘谬以千里的效果,那么你这个人的技术形象就彻底毁了.
学电脑,最好沉下心从金字塔底座学起,一层学好再进一层.