代码之家  ›  专栏  ›  技术社区  ›  giozh

无法在Android/data中创建文件夹

  •  2
  • giozh  · 技术社区  · 11 年前

    我面临着在Android/data文件夹中创建文件夹的问题。 我的代码需要创建文件夹,并从其中的资产文件夹复制文件。 这是我的代码:

    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 回复  |  直到 11 年前
        1
  •  8
  •   CommonsWare    11 年前

    发生了什么?

    获取主设备所有者所在目录的正确方法 Android/data/ 在外部存储上,只需调用 getExternalFilesDir() 在可用的 Context .替换:

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

    具有:

        File folder = context.getExternalFilesDir();