我面临着在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文件夹,则不会创建带有我的应用程序包名称的新文件夹。 在清单中,我设置了读写存储权限。发生了什么?
发生了什么?
获取主设备所有者所在目录的正确方法 Android/data/ 在外部存储上,只需调用 getExternalFilesDir() 在可用的 Context .替换:
Android/data/
getExternalFilesDir()
Context
String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName());
具有:
File folder = context.getExternalFilesDir();