无法在Android /数据中创建文件夹

时间:2015-01-24 20:02:07

标签: android android-external-storage

我在Android / data文件夹中创建文件夹时遇到问题。 我的代码需要创建文件夹,并从其中的asset文件夹中复制文件。 这是我的代码:

private File getFileForShare(String filename) {
    try {
        String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
        File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName());
        if (!folder.exists()) {
            folder.mkdir();
        }
        AssetManager am = context.getAssets();
        InputStream inputStream = am.open("audio/" + filename);

        File f = new File(folder.getAbsolutePath(), filename);
        OutputStream outputStream = new FileOutputStream(f);
        byte buffer[] = new byte[1024];
        int length = 0;

        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }

        outputStream.close();
        inputStream.close();

        return f;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

初始化OutputStream对象时,我获得了FileNotFoundException。 此外,如果我转到Android / data文件夹,则不会创建包含我的应用程序包名称的新文件夹。 内部清单我已设置读写存储权限。怎么了?

1 个答案:

答案 0 :(得分:8)

  

出了什么问题?

获取主设备所有者位于外部存储上的Android/data/下的目录的正确方法是在可用的getExternalFilesDir()上调用Context。替换:

    String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName());

使用:

    File folder = context.getExternalFilesDir();