拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法。
1. import java.io.*;
2. /**
3. * 复制文件夹或文件夹
4. */
5. public class CopyDirectory {
6. // 源文件夹
7. static String url1 = "f:/photos";
8. // 目标文件夹
9. static String url2 = "d:/tempPhotos";
10. public static void main(String args[]) throws IOException {
11. // 创建目标文件夹
12. (new File(url2)).mkdirs();
13. // 获取源文件夹当前下的文件或目录
14. File[] file = (new File(url1)).listFiles();
15. for (int i = 0; i < file.length; i++) {
16. if (file[i].isFile()) {
17. // 复制文件
18. copyFile(file[i],new File(url2+file[i].getName()));
19. }
20. if (file[i].isDirectory()) {
21. // 复制目录
22. String sourceDir=url1+File.separator+file[i].getName();
23. String targetDir=url2+File.separator+file[i].getName();
24. copyDirectiory(sourceDir, targetDir);
25. }
26. }
27. }
28. // 复制文件
29. public static void copyFile(File sourceFile,File targetFile)
30. throws IOException{
31. // 新建文件输入流并对它进行缓冲
32. FileInputStream input = new FileInputStream(sourceFile);
33. BufferedInputStream inBuff=new BufferedInputStream(input);
34.
35. // 新建文件输出流并对它进行缓冲
36. FileOutputStream output = new FileOutputStream(targetFile);
37. BufferedOutputStream outBuff=new BufferedOutputStream(output);
38.
39. // 缓冲数组
40. byte[] b = new byte[1024 * 5];
41. int len;
42. while ((len =inBuff.read(b)) != -1) {
43. outBuff.write(b, 0, len);
44. }
45. // 刷新此缓冲的输出流
46. outBuff.flush();
47.
48. //关闭流
49. inBuff.close();
50. outBuff.close();
51. output.close();
52. input.close();
53. }
54. // 复制文件夹
55. public static void copyDirectiory(String sourceDir, String targetDir)
56. throws IOException {
57. // 新建目标目录
58. (new File(targetDir)).mkdirs();
59. // 获取源文件夹当前下的文件或目录
60. File[] file = (new File(sourceDir)).listFiles();
61. for (int i = 0; i < file.length; i++) {
62. if (file[i].isFile()) {
63. // 源文件
64. File sourceFile=file[i];
65. // 目标文件
66. File targetFile=new
67. File(new File(targetDir).getAbsolutePath()
68. +File.separator+file[i].getName());
69. copyFile(sourceFile,targetFile);
70. }
71. if (file[i].isDirectory()) {
72. // 准备复制的源文件夹
73. String dir1=sourceDir + "/" + file[i].getName();
74. // 准备复制的目标文件夹
75. String dir2=targetDir + "/"+ file[i].getName();
76. copyDirectiory(dir1, dir2);
77. }
78. }
79. }
80. }
分享到:
相关推荐
在Java编程中,复制文件夹是一项常见的操作,特别是在处理数据迁移、备份或系统部署时。本文将深入探讨如何使用Java实现文件夹及其内容的复制,包括文件的读取、写入以及创建新文件等核心知识点。 首先,我们需要...
在Java编程语言中,复制一个目录下的所有文件到另一个目录是一项常见的任务,特别是在处理文件系统操作时。这个过程涉及到文件的遍历、读取和写入。以下将详细讲解如何实现这一功能,以及相关的Java API和技术点。 ...
对于备份到目标文件夹,你可能需要在压缩完成后,将ZIP文件复制到指定的位置。这可以通过`Files.copy`方法实现,只要提供源文件和目标文件的路径即可。 在解压缩方面,可以使用`ZipFile`类来读取ZIP文件,然后通过`...
在Java编程中,复制文件和复制文件夹是常见的操作,特别是在处理数据迁移、备份或程序部署时。下面我们将深入探讨如何使用Java实现这些功能,并提供相关的代码示例。 首先,让我们看看如何复制单个文件。Java标准库...
在Java编程中,复制文件夹是一项常见的任务,特别是在处理数据迁移、备份或程序部署时。以下将详细讲解如何使用Java实现文件夹的复制。 首先,我们需要理解文件和文件夹的基本操作。在Java中,`java.io`包提供了...
在Java编程语言中,复制文件和文件夹是一个常见的任务,特别是在处理文件系统操作时。这里我们将深入探讨如何使用Java实现这个功能。 首先,让我们来看一下标题中提到的`copyFile`方法,这是一个用于复制单个文件的...
下面是一个简单的递归复制文件夹的Java代码示例: ```java public void copyDirectory(File source, File target) { if (source.isDirectory()) { if (!target.exists()) { target.mkdir(); } String[] ...
综上所述,Java文件夹的拷贝涉及了文件系统的操作、文件和目录的遍历、文件的读写与复制等多个知识点。`copyFile.java`源码文件为我们提供了一个基础的实现,通过理解和扩展这个代码,我们可以根据实际需求构建更...
复制文件夹通常涉及递归处理源文件夹中的所有文件和子文件夹,并将它们复制到目标位置。这里的关键在于正确地处理文件夹结构,确保目标位置的文件夹结构与源文件夹完全一致。 ##### 代码实现: ```java private ...
改代码,用java简单的实现了文件夹、文件的复制
在Java编程中,文件夹复制是一项常见的操作,特别是在系统备份、数据迁移或者程序部署等场景。本篇将详细讲解如何实现文件夹的复制,并在复制完成后删除原文件夹。我们将基于给定的`FileCopy.java`文件来探讨相关...
纯java实现,nio复制。其中文件夹复制同步使用channel实现,文件夹的交并集对比使用lamda实现,文件的同步比对逻辑通过比对文件的大小、日期、修改时间等实现
用java实现的多级文件夹的复制,可用于文件复制的复制与备份
文件复制功能。如运行:java CopyFile from to,将from文件内的数据复制到to文件中,如果from为文件夹,则复制文件夹及其所有的子文件
java移动或复制文件夹:FileUtil
Java文件夹复制功能是通过编程实现的,主要涉及到文件操作和网络通信两个核心知识点。这里有两个关键类:`FileSelection` 和 `BackupClient`。`FileSelection` 类用于选择和组织待复制的文件,而 `BackupClient` 类...
复制文件夹需要使用 File 类在目标文件夹中创建相应的目录,并且使用递归方法。下面是复制文件夹的步骤: 1. 创建目标文件夹 2. 获取源文件夹当前下的文件或目录 3. 遍历文件或目录,如果是文件则复制文件,如果是...
Java 使用递归复制文件夹及文件夹 Java 使用递归复制文件夹及文件夹是 Java 编程语言中的一种常见操作,主要用于复制文件夹及文件夹中的所有文件和子文件夹。下面我们将详细介绍 Java 使用递归复制文件夹及文件夹的...
java 批量复制文件并把路径插入到数据库表中; 包括:读取文件夹列表、子文件夹;新建一个文件夹;Oracle数据库链接; 修改一下链接数据库以及文件夹路径即可