正如标题所示,我正在尝试在 Android 上创建一个文件夹,但所有的斜线都已从中删除。
有关更多背景信息:
具体来说,我正在尝试创建一个目录来存储我的应用程序的用户文件。用户必须可以从文件管理器(例如 File Manager HD)访问这些文件,因为该应用程序不支持完整的文件管理。使用 API 级别 8+ 的标准,我将可公开访问的文件夹的根目录引用为Environment.getExternalStoragePublicDirectory()
. 然后我尝试使用. File.mkdirs()
有关更多信息,请参阅下面的代码。
我已经:
- 检查以确保 SD 卡已安装、可读和可写
- 启用权限
WRITE_EXTERNAL_STORAGE
- 尝试
File.mkdir()
对层次结构中的每个文件使用直到文件夹位置 - 尝试使用
/
,\\
,File.separatorChar
, 和File.separator
作为文件夹分隔符
代码:
boolean success = true;
//The public directory
File publicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
//The location of the sketchbook
File sketchbookLoc = new File(publicDir + "Sketchbook" + File.separator);
//The location of the sketch
//getGlobalState().getSketchName() returns the name of the sketch: "sketch"
File sketchLoc = new File(sketchbookLoc + getGlobalState().getSketchName() + File.separator);
if(!sketchLoc.mkdirs()) success = false;
//Notify the user of whether or not the sketch has been saved properly
if(success)
((TextView) findViewById(R.id.message)).setText(getResources().getText(R.string.sketch_saved));
else
((TextView) findViewById(R.id.message)).setText(getResources().getText(R.string.sketch_save_failure));
通过上述测试的各种化身(实际工作的测试),我收到了一致的结果:我在 DCIM 中获得了一个新文件夹,其名称对应于应该是它的分层父级的所有文件夹的组合。换句话说,我创建了一个新目录,但所有文件夹分隔符都已从中删除。
现在,我问你:
- 我是否试图将用户数据保存在正确的位置?我应该这样做吗?
- 甚至可以在 DCIM 文件夹中创建新文件夹吗?Android会阻止它吗?
- 这个问题是我特有的吗?其他人可以在 DCIM 文件夹中创建文件夹吗?
- 我是否使用了正确的文件夹分隔符?
- 还有什么我绝对、完全、完全失踪的东西吗?
现在我已经完成了打字,并且您已经阅读了我的(过长的)问题,我希望我能找到某种答案。如果您需要澄清或更多信息,请说出来。
编辑:创建文件夹的一个例子是“DCIMSketchbooksketch”,它应该是“DCIM/Sketchbook/sketch”。