如何在SDCARD目录中创建文件

6
我想在SD卡的一个目录中创建一个文件(目录和文件都未创建)。 如何实现?
谢谢。
6个回答

24

尝试下面的示例:

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" />

我认为我正在创建两个目录,证明当尝试从 /data/data... 复制文件到“myDirectory”时,我遇到了文件未找到异常:04-11 20:23:57.173: DEBUG/Carburant(16333): /mnt/sdcard/Carburant/alaa.peugeot.settings.dat(是一个目录) - androniennn
2
这是一段关于编程的英文内容,以下为翻译的中文文本:将它放在两个目录中。编写此代码: String path = Environment.getExternalStorageDirectory()+"/dirName/"; File file = new File(path+dirName); if(!file.exists()){ file.getParentFile().mkdirs(); try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } - Sam
创建的是文件夹而不是文件。 - App Kart

3
问题在于mkdirs()方法被调用的File对象包含了整个路径,直到实际文件。应该在只包含路径(即目录)的File对象上调用它,然后使用另一个File对象创建实际的文件。

2

使用这个:

DocumentFile tempDir = DocumentFile.fromSingleUri(context,targetDirectoryUri);
DocumentFile newDocumentFile = tempDir.createFile(type,name);

"targetDirectoryUri"是您想要将文件放入其中的目录的URI。 这是唯一的解决方案! 在API 19之后,您无法在SD卡上写入文件,因此必须使用DocumentFile而不是File。 此外,您还必须获取SD卡权限。要了解如何执行此操作并获取“targetDirectoryUri”,请阅读此页面


2

您还需要添加写入外部媒体的权限。在应用程序清单文件中,在<manifest>标签之间的某个位置添加以下行,但不要放在<application>标签内:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


是的,我添加了这个!但为什么它说“myFile.example”是一个目录? - androniennn

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" />

-1

点击此处了解为什么在SD卡的根目录创建文件是一个不好的主意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接