要使用IO流复制文件夹,你需要遵循以下步骤:
1.?创建一个新的目标文件夹,用于存储复制后的文件夹。
2.?遍历源文件夹中的所有文件和子文件夹。
3.?如果当前遍历到的是文件夹,则递归地调用复制文件夹的方法。
4.?如果当前遍历到的是文件,则进行文件的复制操作。
下面是一个使用IO流复制文件夹的示例代码:
import?java.io.*;
public?class?FolderCopyExample?{
public?static?void?main(String[]?args)?{
String?sourceFolder?=?"path/to/source/folder";
String?destinationFolder?=?"path/to/destination/folder";
//?调用复制文件夹的方法
copyFolder(sourceFolder,?destinationFolder);
}
public?static?void?copyFolder(String?sourceFolder,?String?destinationFolder)?{
File?source?=?new?File(sourceFolder);
File?destination?=?new?File(destinationFolder);
//?如果源文件夹不存在,则退出
if?(!source.exists())?{
System.out.println("源文件夹不存在!");
return;
}
//?如果目标文件夹不存在,则创建它
if?(!destination.exists())?{
destination.mkdir();
System.out.println("目标文件夹已创建!");
}
//?获取源文件夹中的所有文件和子文件夹
File[]?files?=?source.listFiles();
if?(files?!=?null)?{
//?遍历源文件夹中的所有文件和子文件夹
for?(File?file?:?files)?{
if?(file.isDirectory())?{
//?如果当前遍历到的是文件夹,则递归调用复制文件夹的方法
copyFolder(file.getAbsolutePath(),?destinationFolder?+?"/"?+?file.getName());
}?else?{
//?如果当前遍历到的是文件,则进行文件的复制操作
copyFile(file.getAbsolutePath(),?destinationFolder?+?"/"?+?file.getName());
}
}
System.out.println("文件夹复制完成!");
}
}
public?static?void?copyFile(String?sourceFilePath,?String?destinationFilePath)?{
try?{
InputStream?inputStream?=?new?FileInputStream(sourceFilePath);
OutputStream?outputStream?=?new?FileOutputStream(destinationFilePath);
byte[]?buffer?=?new?byte[1024];
int?length;
//?读取源文件并写入目标文件
while?((length?=?inputStream.read(buffer))?>?0)?{
outputStream.write(buffer,?0,?length);
}
inputStream.close();
outputStream.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}
请将代码中的?`path/to/source/folder`?和?`path/to/destination/folder`?替换为实际的源文件夹路径和目标文件夹路径。
这段代码首先检查源文件夹是否存在,如果不存在则直接退出。然后,它创建目标文件夹(如果不存在)。接下来,它遍历源文件夹中的所有文件和子文件夹。如果当前遍历到的是文件夹,则递归调用复制文件夹的方法。如果当前遍历到的是文件,则调用复制文件的方法。
复制文件的方法使用了输入流(InputStream)和输出流(OutputStream)来读取和写入文件的内容。它使用一个缓冲区来提高效率,每次从输入流中读取一定数量的字节,并将它们写入输出流中。
领取专属 10元无门槛券
私享最新 技术干货