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

时间:2019-10-29 01:41:26

标签: java android

我想在正在创建的应用程序中包括目录复制功能。我问你,因为我在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)

1 个答案:

答案 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();
}

请尝试此操作,我认为它会起作用。