Android 把一个文件夹中的所有文件复制到另外一个文件夹中 完整代码
时间: 2024-09-10 20:12:29 浏览: 51
Android实现复制Assets文件到SD卡
在Android开发中,要复制一个文件夹中的所有文件到另一个文件夹,可以通过`File`类来实现。下面是一个使用Java语言在Android中复制文件夹内容的示例代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class FileUtil {
/**
* 复制文件夹内容到另一个文件夹
* @param source 要复制的源文件夹路径
* @param destination 目标文件夹路径
*/
public static void copyFolder(File source, File destination) throws IOException {
if (source.isDirectory()) {
// 如果目标目录不存在,则创建
if (!destination.exists()) {
destination.mkdirs();
}
// 获取源文件夹中的所有文件和文件夹
String files[] = source.list();
for (String file : files) {
File srcFile = new File(source, file);
File destFile = new File(destination, file);
// 递归调用此方法来复制文件夹内容
copyFolder(srcFile, destFile);
}
} else {
// 如果不是文件夹,则直接复制文件
copyFile(source, destination);
}
}
/**
* 复制文件
* @param sourceFile 源文件
* @param destFile 目标文件
*/
public static void copyFile(File sourceFile, File destFile) throws IOException {
try (FileInputStream inStream = new FileInputStream(sourceFile);
FileOutputStream outStream = new FileOutputStream(destFile);
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel()) {
long transfered = 0;
long size = inChannel.size();
while (transfered < size) {
long position = inChannel.position();
transfered += inChannel.transferTo(position, size - position, outChannel);
}
}
}
}
```
这段代码定义了一个`FileUtil`类,其中包含两个方法:`copyFolder`用于复制文件夹及其内容,`copyFile`用于复制单个文件。`copyFolder`方法通过递归调用自身来处理子文件夹中的文件。`copyFile`方法则使用了`FileChannel`来进行文件的复制,这是一种比使用`FileInputStream`和`FileOutputStream`更高效的方法。
使用这个工具类,你可以通过如下代码来复制一个文件夹到另一个位置:
```java
try {
File sourceFolder = new File("/path/to/source/folder");
File destinationFolder = new File("/path/to/destination/folder");
FileUtil.copyFolder(sourceFolder, destinationFolder);
} catch (IOException e) {
e.printStackTrace();
}
```
确保在调用这些方法时处理好异常,以应对可能出现的错误情况。
阅读全文