如何在SDCARD目录中创建文件

时间:2011-04-11 17:49:28

标签: android file-io

我想在SDCARD中的目录(未创建)中创建一个文件(未创建)。 怎么做?

谢谢。

6 个答案:

答案 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卡根目录下创建文件是个坏主意