黑马程序员技术交流社区

标题: 复习下带内容的文件复制 io [打印本页]

作者: qixing0918    时间: 2013-10-31 09:07
标题: 复习下带内容的文件复制 io
代码如下
  1. public class FileCopy {

  2. // 写个文件复制的小程序 主要用的的是io 1.复制都有源地址与目的地址吧 2.复制用到迭代(挺高深个东西目前觉得)
  3. // 3.对于文件复制不用你创建 但文件夹却要你创建的 4.file类是封装文件的 有name都属性

  4. public static void main(String[] args) throws Exception {

  5. File file = new File("D:\\dbcp");
  6. File file1 = new File("D:\\下载");
  7. copyTest(file, file1);

  8. }

  9. public static void copyTest(File src, File dest) throws Exception {

  10. System.out.println(src);
  11. File newFile = new File(dest, src.getName());
  12. newFile.mkdir();
  13. File[] files = src.listFiles();

  14. for (File file : files) {
  15. if (file.isDirectory()) {
  16. copyTest(file, newFile);
  17. }
  18. if (file.isFile()) {
  19. copyFile(file, new File(newFile, file.getName()));
  20. }
  21. }

  22. }

  23. public static void copyFile(File src, File dect) throws Exception {
  24. InputStream is = new FileInputStream(src);
  25. OutputStream os = new FileOutputStream(dect);
  26. byte[] buf = new byte[1024];
  27. int len = 0;
  28. while ((len = is.read(buf)) != -1) {
  29. os.write(buf, 0, len);
  30. }
  31. os.close();
  32. is.close();

  33. }
  34. }
复制代码
复制应该注意什么
1.先要相当复制 源是什么 目的是什么  (最好都是File对象)
2.对与文件夹怎么处理 对于文件又怎么处理
3.对于文件夹 直接在目的处创建一个文件夹就好 对于文件直接输入输出流输出到目的地就行  但如果文件夹下还有内容怎么办
4.我们就先判断是文件还是文件夹 文件直接输入输出处理 文件夹呢本方法就是处理文件夹的
我们只需把源目的地址改变就行这样就能做到递归专门去处理文件夹的子文件夹
5.上面代码copeTest()方法 就是处理文件夹的 因为知道传过来的是文件夹所以
----1.第一步在目的地址创建一个文件夹内容是src.getName() ( 也就是跟源地址名字相同)
      2.第二步 的到源文件夹所有文件内容File[] files = src.listFiles(); 遍历
      3.第三步 判断是否是文件夹 是文件夹copyTest(file, newFile); 参数源是文件本身  目的是新建的文件夹 (这样就会达到递归效果)
      4.第四步 判断是否是文件 是文件copyFile(file, new File(newFile, file.getName())); 源同样是文件本身 目的是在新文件夹下建一个跟源同名的文件












欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2