小编典典

如何在 SD 卡上自动创建目录

all

我正在尝试将我的文件保存到以下位置
FileOutputStream fos = new FileOutputStream("/sdcard/Wallpaper/"+fileName);
,但我遇到了异常java.io.FileNotFoundException
但是,当我将路径设置为"/sdcard/"有效时。

现在我假设我无法以这种方式自动创建目录。

有人可以建议如何创建directory and sub-directory使用代码吗?


阅读 73

收藏
2022-07-16

共1个答案

小编典典

如果您创建一个包装顶级目录的File对象,您可以调用它的mkdirs()方法来构建所有需要的目录。就像是:

// create a File object for the parent directory
File wallpaperDirectory = new File("/sdcard/Wallpaper/");
// have the object build the directory structure, if needed.
wallpaperDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(wallpaperDirectory, filename);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);

注意:
使用Environment.getExternalStorageDirectory()获取“SD
卡”目录可能是明智的,因为如果手机附带的东西不是 SD 卡(例如内置闪存,a’la
the苹果手机)。无论哪种方式,您都应该记住,您需要检查以确保它确实存在,因为 SD 卡可能会被移除。

更新: 由于 API 级别 4 (1.6),您还必须请求许可。像这样的东西(在清单中)应该可以工作:

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