简体   繁体   English

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

[英]Unable to create folder inside Android/data

I'm facing a problem with creation of folder inside Android/data folder. 我在Android / data文件夹中创建文件夹时遇到问题。 My code need to create folder, and copy a file from asset folder inside it. 我的代码需要创建文件夹,并从其中的asset文件夹中复制文件。 This is my code: 这是我的代码:

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;
}

I obtain a FileNotFoundException when i initialize OutputStream object. 我初始化OutputStream对象时获取FileNotFoundException。 Also, if i go to Android/data folder, no new folder with my app package name is created. 此外,如果我转到Android / data文件夹,则不会创建包含我的应用程序包名称的新文件夹。 Inside manifest i've set read and write storage permission. 在清单中我设置了读写存储权限。 What's wrong? 怎么了?

What's wrong? 怎么了?

The proper way to get a directory that, for the primary device owner, resides under Android/data/ on external storage, is just to call getExternalFilesDir() on an available Context . 获取主设备所有者驻留在外部存储上的Android/data/下的目录的正确方法是在可用的Context上调用getExternalFilesDir() Replace: 更换:

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

with: 有:

    File folder = context.getExternalFilesDir();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM