我想在正在创建的应用程序中包括目录复制功能。我问你,因为我在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)
答案 0 :(得分:0)
在此行的代码中
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();
}
请尝试此操作,我认为它会起作用。