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

java流的问题
我用BufferedReader来进行复制文件,对txt文件拷贝没有问题,但是拷贝其他的文件如pdf,rar等格式的文件就会出现问题,拷贝后的文件大小跟原来的不一样,而且也打不开 文件被破坏了 难道Reader不能复制出文本格式外的文件吗?

还有 我用FileChannel也出现同样情况 不知道怎么回事

------解决方案--------------------
BufferedReader是用来操作文本文件的,也就是字符流,无法用来操作像PDF RAR这样的二进制文件,如果你要复制这些文件,可以考虑用FileInputStream FileOutpuStream 然后用相应的Buffer缓冲

至于用FileChannel是可以实现复制任何类型的文件,你之所以出问题 肯定是程序的问题,FileChannel是NIO的内容估计你对NIO的几个API操作调用有问题,可以贴程序看看
------解决方案--------------------
// Create channel on the source
FileChannel srcChannel = new FileInputStream("srcFilename").getChannel();

// Create channel on the destination
FileChannel dstChannel = new FileOutputStream("dstFilename").getChannel();

// Copy file contents from source to destination
dstChannel.transferFrom(srcChannel, 0, srcChannel.size());

// Close the channels
srcChannel.close();
dstChannel.close();
------解决方案--------------------
用文本编辑器可以打开直接查看内容的文件一般就是文本文件,二进制文件需要特殊的应用程序才能打开

我没有用FileChannel复制过那么大的文件,不清楚复制大文件和一般文件的代码是否一样

探讨

引用:
BufferedReader是用来操作文本文件的,也就是字符流,无法用来操作像PDF RAR这样的二进制文件,如果你要复制这些文件,可以考虑用FileInputStream FileOutpuStream 然后用相应的Buffer缓冲

至于用FileChannel是可以实现复制任何类型的文件,你之所以出问题 肯定是程序的问题,FileCha……