这个过程起初看起来非常简单,但是我必须有一些事情可以解决这个任务。我想在我的应用程序本地创建一个设置文件,用于存储大量数据(不是偏好值得)。我最后使用以下代码片段保存文件。
protected File createSettingsFileLocation(String fileNameF)
{
File directoryFile = context_.getDir("settings", Context.MODE_PRIVATE);
File settingsFile;
settingsFile = new File(directoryFile, fileNameF);
if (!settingsFile.exists())
{
try
{
settingsFile.createNewFile();
} catch(IOException e)
{
Log.e(MyConstants.LOG_TAG, "Could not create the file as intended within internal storage.");
return null;
}
}
return settingsFile;
}
然后通过以下代码片段在本地查找文件继续检索该文件。
public String getCurrentFileContainingSettings()
{
List<String >settingFilesInFolder = getLocalStorageFileNames();
if (settingFilesInFolder == null || settingFilesInFolder.isEmpty())
{
return null;
}
String pathToCurrentSettingsFile = settingFilesInFolder.get(0);
return pathToCurrentSettingsFile;
}
protected List<String> getLocalStorageFileNames()
{
return Arrays.asList(context_.fileList());
}
但是,settingFilesInFolder
始终不返回任何条目,因此我从getCurrentFileContainingSettings()
返回null。正如我从documentation所看到的那样,我认为我做得对。但是,我必须遗漏一些东西,所以我希望有人可以向我指出一些事情。一旦在系统中在首选项文件中创建文件名,我就可能对文件名进行硬编码,以便在第一次创建设置时进行访问,但我不应该像我想的那样做。
答案 0 :(得分:1)
fileList()
仅查看getFilesDir()
,而不是其子目录,例如您通过getDir()
创建的子目录。改为使用标准Java文件I / O(例如,list()
)。