使用Java IO 流进行文件的复制,复制成功,却打不开复制的文件

朱雀 2022-08-02 09:58 350阅读 0赞

在刚开始学习Java IO操作的时候,用的并不是很熟,看的书本上的内容也讲的不可能很全面,很多小的方面都必须从实践中慢慢积累、学习。
在这里遇到的一个问题是,复制成功的文件,却打不开。比如PDF文件,显示文件损坏,打不开文件。后来才发现是因为原因在字节流操作和字符流操作的区别:
字符流主要针对一些文本文档(比字节流操作的效率要高),比如.txt、.doc,而pdf就不行。
字节流几乎可以对任何文件类型进行操作,主要是对非文件类型的,如媒体文件(音频,视频,图片…)。

  1. /**
  2. *使用缓冲字节流进行PDF文档的复制
  3. */
  4. public static void copyPDF(File src, File des) throws IOException {
  5. FileOutputStream writer = null;
  6. FileInputStream reader = null;
  7. BufferedInputStream bufR = null;
  8. BufferedOutputStream bufW = null;
  9. try {
  10. reader = new FileInputStream(src);
  11. writer = new FileOutputStream(des);
  12. bufR = new BufferedInputStream(reader);
  13. bufW = new BufferedOutputStream(writer);
  14. int temp = 0;
  15. while ((temp = bufR.read()) != -1) {
  16. bufW.write(temp);
  17. }
  18. } catch (FileNotFoundException e) {
  19. e.printStackTrace();
  20. } finally {
  21. if (bufR != null) {
  22. reader.close();
  23. bufR.close();
  24. }
  25. if (bufW != null) {
  26. writer.close();
  27. bufW.close();
  28. }
  29. }
  30. }

文件操作完成,一定要记得关闭流。

发表评论

表情:
评论列表 (有 0 条评论,350人围观)

还没有评论,来说两句吧...

相关阅读

    相关 使用IO复制文件

    对文件的读取也是经常会遇到的操作,那么哪种方式效率更快呢,今天来做个测试。 首先能想到的就是,应该采用字节流对文件进行复制,文件可以是任何形式,如图片、视频、办公文档、压缩文