-1

我无法弄清楚为什么每次打开我的应用程序都会崩溃。只有当我取消注释 for 循环时。

我在这里使用这个想法将文件从一个目录复制到另一个

如何以编程方式移动、复制和删除 SD 上的文件和目录?

但是这部分(我尝试了这种方式以及与上面链接中相同的方式,使用子字符串等)

for (File file : files)
{
    CopyFile(file, target);
}

不断导致我的应用程序崩溃。我尝试仅注释掉这部分并且应用程序运行良好(它没有复制任何内容,但是因为它没有访问文件)

有任何想法吗?

    private void CopyFile(File source, File target) throws IOException {



    if (source.isDirectory()){

        File[] files = source.listFiles();
        for (File file : files)
        {
            CopyFile(file, target);
        }

    } else {
        InputStream in = new FileInputStream(source);
        OutputStream out = new FileOutputStream(Environment.getExternalStorageDirectory());

        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0){
            out.write(buf, 0, len);
        }
        in.close();
        out.close();

    }
4

1 回答 1

0

除了从您的应用程序控制的子目录之外,您无法读取 /data/data 中的任何内容。

/data/data/*packagename*/files

是 Context.getFilesDir() 返回的路径

/data

是 Environment.getDataDirectory() 返回的路径。

您希望这些文件究竟在哪里它们最初是如何到达那里的?

于 2013-10-10T00:38:16.337 回答