A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戴进飘 中级黑马   /  2012-9-26 00:56  /  1568 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 屈俊材 于 2012-9-26 07:51 编辑

拷贝文件时,是不是使用缓冲流最快了。
还有没有比这更快的。
  1. public static void CopyFile()
  2. {
  3. BufferedInputStream bis = null;

  4. BufferedOutputStream bos = null;

  5. try
  6. {
  7. bis = new BufferedInputStream(new FileInputStream("File.txt"));

  8. bos = new BufferedOutputStream(new FileOutputStream("CopyFile.txt"));

  9. byte[] by = new byte[bis.available()];

  10. bis.read(by);

  11. bos.write(by);

  12. }
  13. catch (IOException e)
  14. {
  15. throw new RuntimeException("复制失败");
  16. }
  17. finally
  18. {
  19. try
  20. {
  21. if(bis != null)
  22. bis.close();
  23. }
  24. catch (IOException e)
  25. {
  26. throw new RuntimeException("读取关闭失败");
  27. }
  28. try
  29. {
  30. if(bos != null)
  31. bos.close();
  32. }
  33. catch (IOException e)
  34. {
  35. throw new RuntimeException("写入关闭失败");
  36. }
  37. }
  38. }
复制代码

5 个回复

倒序浏览
有比缓冲区更快的方法,FileChannel,API摘要:用于读取、写入、映射和操作文件的通道。除了字节通道中常见的读取、写入和关闭操作外,此类还定义了下列特定于文件的操作: 将文件中的某个区域直接映射到内存中;对于较大的文件,这通常比调用普通的 read 或 write 方法更为高效。
通过FileInputStream的getChannel返回与此文件输入流有关的唯一 FileChannel 对象,再通过FileChannel对象的transferTo方法“将字节从此通道的文件传输到给定的可写入字节通道”。
回复 使用道具 举报
该通道的关键在于区分哪个文件有数据,哪个文件没数据,数据是从有数据的文件里流向没数据的文件。具体代码明天再说,你可以看下源码。
回复 使用道具 举报
史龙贤 发表于 2012-9-26 01:11
有比缓冲区更快的方法,FileChannel,API摘要:用于读取、写入、映射和操作文件的通道。除了字节通道中常见 ...

请问,在视频中有没有讲过这个类
回复 使用道具 举报
没有讲这个类,你可以查阅API,看源码来学习,不可能每个都讲到吧!讲些共性的,典型的,举一反三!
回复 使用道具 举报
史龙贤 发表于 2012-9-26 14:15
没有讲这个类,你可以查阅API,看源码来学习,不可能每个都讲到吧!讲些共性的,典型的,举一反三! ...

那也是。谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马