gpt4 book ai didi

java - 有没有办法在 Android 上复制文件夹? (非文件)

转载 作者:行者123 更新时间:2023-12-01 22:19:50 25 4
gpt4 key购买 nike

我想在我正在创建的应用程序中包含目录复制功能。我问你是因为我在 Android 上找不到该目录的副本。

尝试将在 Java 上运行良好的代码移植到 Android 时出现问题。

public void copyDirectory(){
File folder1 = new File(srcDir);
File folder2 = new File(dstDir);

File[] target_file = folder1.listFiles();
for (File file : target_file) {
File temp = new File(folder2.getAbsolutePath() + File.separator + file.getName());
if(file.isDirectory()){
temp.mkdir();
} else {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(file);
fos = new FileOutputStream(temp) ;
byte[] b = new byte[4096];
int cnt = 0;
while((cnt=fis.read(b)) != -1){
fos.write(b, 0, cnt);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
}
}

引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void java.io.FileOutputStream.close()” 在 com.xxx.xxx.FileCombination.copyDirectory(FileCombination.java:54)

最佳答案

在您的代码中的这一行

File folder1 = new File(srcDir);

srcDir 的值是什么。我认为这不是获得正确的值,这就是文件夹不存在的原因当您调用

时创建
temp.mkdir();

所以我的建议是获取正确的 srcDir 如下

srcDir = Environment.getDataDirectory().getAbsolutePath();

和临时变量

File temp =new File(srcDir,file.getName());
if(!temp.exists())
{
temp.mkDir();
}

请尝试一下,我认为它会起作用。

关于java - 有没有办法在 Android 上复制文件夹? (非文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58600449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com