正如标题所示,我正在尝试在Android上创建一个文件夹,但所有斜杠都已从中删除。
有关更多背景信息:
具体来说,我正在尝试创建一个目录来存储我的应用程序的用户文件。用户必须可以从文件管理器(例如文件管理器HD)访问这些文件,因为该应用程序不支持完整文件管理。使用API级别8+的标准,我使用Environment.getExternalStoragePublicDirectory()
引用可公开访问的文件夹的根目录。然后我尝试创建位于 DCIM>的文件夹。 Sketchbook> [草图的名称] 使用File.mkdirs()
。有关更多信息,请参阅下面的代码。
我已经:
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中获得了一个新文件夹,其名称对应于应该是它的分层父项的所有文件夹的组合。换句话说,我已经创建了一个新目录,但是已经从中删除了所有文件夹分隔符。
现在,我问你:
既然我已经完成了打字,而且你已经读完了我的(过长)问题,我希望我能找到某种答案。如果您需要澄清或了解更多信息,请说明。
编辑:创建文件夹的一个示例是“DCIMSketchbooksketch”,它应该是“DCIM / Sketchbook / sketch”。
答案 0 :(得分:1)
不要使用
File sketchbookLoc = new File(publicDir + "Sketchbook" + File.separator);
但
File sketchbookLoc = new File(publicDir , "Sketchbook");
因为publicDir.toString()将不以文件分隔符结束(即使您以这种方式声明)。 toString()给出了文件的规范名称。
所以你的来源变成了:
//The location of the sketchbook
File sketchbookLoc = new File(publicDir , "Sketchbook" );
//The location of the sketch
File sketchLoc = new File(sketchbookLoc , getGlobalState().getSketchName() );