Android 提供了许多用于在设备上持久存储数据的选项。我选择了内部存储,所以请不要建议存储在 SD 卡上。(我看到太多关于内部存储的问题有 SD 卡的答案!!)
我想在我的应用程序的内部存储目录中创建子目录。我遵循了这个 SO answer,转载如下。
File mydir = context.getDir("mydir", Context.MODE_PRIVATE); //Creating an internal dir;
File fileWithinMyDir = new File(mydir, "myfile"); //Getting a file within the dir.
FileOutputStream out = new FileOutputStream(fileWithinMyDir); //Use the stream as usual to write into the file.
不幸的是,这是创建带有“app_”前缀的子目录。因此,从示例中,子目录看起来像“app_mydir”(不理想)。
这个 SO question 的答案表明您可以通过这种方式摆脱“app_”前缀:
m_applicationDir = new File(this.getFilesDir() + "");
m_picturesDir = new File(m_applicationDir + "/mydir");
但我想写一个 zip 到 /data/data/com.mypackages/files/mydir/the.zip 之类的东西。
所以,最后,我的代码如下所示:
File appDir = new File(getApplicationContext().getFilesDir() + "");
File subDir = new File(appDir + "/subDir");
File outFile = new File(subDir, "/creative.zip");
但是,当我尝试这个时,这会产生另一个错误:“文件不存在”:
FileOutputStream fileStream = new FileOutputStream(outFile);
我如何(1)创建一个没有“app_”前缀的子目录并(2)在其中写入一个 zip?
另外,如果我的第一个要求不合理,请在评论中告诉我原因!我确信“app_”前缀有一些让我无法理解的含义。