我想在SDCARD中的目录(未创建)中创建一个文件(未创建)。 怎么做?
谢谢。
答案 0 :(得分:22)
尝试以下示例:
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//handle case of no SDCARD present
} else {
String dir = Environment.getExternalStorageDirectory()+File.separator+"myDirectory";
//create folder
File folder = new File(dir); //folder name
folder.mkdirs();
//create file
File file = new File(dir, "filename.extension");
}
不要忘记将权限添加到AndroidManifest:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:3)
问题是在包含直到实际文件的整个路径的File对象上调用mkdirs()。它应该在包含Path(目录)的File对象上调用,并且只能调用它。然后,您应该使用另一个File对象来创建实际文件。
答案 2 :(得分:2)
您还必须将permission to write添加到外部媒体。 在应用程序清单文件中添加以下行,位于&lt; manifest&gt;之间。标签,但不在里面&lt; application&gt;标记:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 3 :(得分:0)
使用此:
DocumentFile tempDir = DocumentFile.fromSingleUri(context,targetDirectoryUri);
DocumentFile newDocumentFile = tempDir.createFile(type,name);
“ targetDirectoryUri”是您要将文件放入其中的目录的uri。 这是唯一的解决方案! 在Api 19之后,您将无法在SDCard上写入数据,因此必须使用DocumentFile 而是文件。 此外,您还必须获得SDCard许可。要了解如何执行此操作并获取targetDirectoryUri,请阅读this。
答案 4 :(得分:0)
您可以在 Kotlin 中使用
val file = File( this.getExternalFilesDir(null)?.getAbsolutePath(),"/your_image_path")
if (!file.exists()) {
file.mkdir()
}
别忘了给予许可
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 5 :(得分:-1)
请参阅here为什么在SD卡根目录下创建文件是个坏主意