Не найти файлы локальных данных, сохраненные в приложении

Сначала процесс казался довольно упрощенным, но должно быть что-то, чего мне не хватает в этой задаче. Был файл настроек, который я хотел бы создать локально для моего приложения для хранения целой группы данных (не предпочтительный вариант). Я закончил тем, что сохранил файл со следующим фрагментом кода.

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());
}
</string></string>

Однако settingFilesInFolder всегда не возвращает записей, поэтому я возвращаю null из getCurrentFileContainingSettings(). Как я мог видеть из документации, кажется, что я делаю все правильно. Но, должно быть, я чего-то упускаю, поэтому я надеялся, что кто-то может что-то указать на меня. Я мог бы потенциально жестко закодировать имя файла, как только он был создан в системе, в файле предпочтений для доступа позже при первом создании настроек, но мне не нужно было делать что-то подобное, я бы подумал.

1 ответ

fileList() только смотрит в getFilesDir(), а не в его подкаталоги, например, тот, который вы создали через getDir(). Вместо этого используйте стандартный ввод/вывод файлов Java (например, list()).

licensed under cc by-sa 3.0 with attribution.