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

Java 有没有办法在Android上复制文件夹?(非文件),java,android,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 fil

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

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

public void copyDirectory()
一个没有参数的函数?请用参数开始制作。类似于
public void copyDirectory(String srcDir,String dstDir)
public void copyDirectory(File srcFolder,File dstFolder)
。在那之后,展示你确切使用的路径。以及安卓版本。mkdirs()返回false或true。检查返回的内容。如果目录已经存在,则不要调用mkdirs()这不是目标。这些是源文件。更好:
File[]srcfiles[]=folder1.listFiles()然后
temp
是目标。并使函数递归。您没有复制源的子目录中的文件。请检查mkdir()的返回值。如果返回false,则不要继续。