关键词搜索

源码搜索 ×
×

java复制文件夹

发布2018-08-29浏览977次

详情内容

本程序可以复制文件,或者文件夹

用到io和递归的知识:

复制文件夹,要层层深入,因为文件夹中可能含有文件夹,复制时,要先创建这个新文件夹,所以要拼接路径.思路清楚即可

代码如下:

  1. package com.carlinfo.filetree;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. public class CopyFolder2 {
  10. public static void main(String[] args) {
  11. /* 准备源路径 */
  12. String path = "H:\\test2";
  13. File sourceFile = new File(path);
  14. /* 目标路径 */
  15. String path2 = "h:\\test\\c";
  16. File TargetFile = new File(path2);
  17. copy(sourceFile, TargetFile);
  18. System.out.println("复制成功!");
  19. }
  20. public static void copy(File sourceFile, File TarFile) {
  21. String str = "";
  22. /* 判断该文件是不是文件夹,是文件,直接复制文件 */
  23. if (!sourceFile.isDirectory()) {
  24. cy(sourceFile, TarFile);
  25. } else {
  26. str = TarFile.getPath() + "\\" + sourceFile.getName();
  27. System.out.println("--创建文件夹-->" + str);
  28. File fs = new File(str);
  29. fs.mkdir();
  30. /* 将该文件夹中的文件取出来 */
  31. File[] listFiles = sourceFile.listFiles();
  32. for (int i = 0; i < listFiles.length; i++) {
  33. /* 对文件夹遍历,判断是文件还是文件夹 */
  34. if (!listFiles[i].isDirectory()) {
  35. cy(listFiles[i], fs);
  36. } else {
  37. /* 如果是文件夹,继续调自己,递归 */
  38. copy(listFiles[i], fs);
  39. }
  40. }
  41. }
  42. }
  43. /**
  44. * 复制文件
  45. * 用到io字节流
  46. *
  47. * @param sourceFile
  48. * @param TarFile
  49. */
  50. public static void cy(File sourceFile, File TarFile) {
  51. /* 用于拼装路径,因为目标文件不存在 */
  52. String str = "";
  53. /* 准备管子 */
  54. FileInputStream fis = null;
  55. FileOutputStream fos = null;
  56. BufferedInputStream bis = null;
  57. BufferedOutputStream bos = null;
  58. /* 准备容器 */
  59. byte[] b = new byte[1024];
  60. /* 拼装路径 */
  61. str = TarFile.getPath() + "\\" + sourceFile.getName();
  62. System.out.println("--创建文件--" + str);
  63. File file = new File(str);
  64. try {
  65. file.createNewFile();
  66. fis = new FileInputStream(sourceFile);
  67. bis = new BufferedInputStream(fis);
  68. fos = new FileOutputStream(file);
  69. bos = new BufferedOutputStream(fos);
  70. int len = 0;
  71. while ((len = bis.read(b)) != -1) {
  72. /* 写数据 */
  73. bos.write(b, 0, len);
  74. }
  75. bos.flush();
  76. } catch (FileNotFoundException e) {
  77. e.printStackTrace();
  78. } catch (IOException e) {
  79. e.printStackTrace();
  80. } catch (Exception e) {
  81. e.printStackTrace();
  82. } finally {
  83. try {
  84. if (bis != null) {
  85. /* 记得关闭管子 */
  86. bis.close();
  87. bis = null;
  88. }
  89. } catch (IOException e) {
  90. e.printStackTrace();
  91. }
  92. try {
  93. if (bos != null) {
  94. /* 关闭管子 */
  95. bos.close();
  96. bos = null;
  97. }
  98. } catch (IOException e) {
  99. e.printStackTrace();
  100. }
  101. }
  102. }
  103. }

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载