1

起初,这个过程似乎很简单,但在完成这项任务时,我肯定缺少一些东西。我想在我的应用程序本地创建一个设置文件,用于存储一大堆数据(不值得偏好)。我最终使用以下代码片段保存了文件。

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(). 正如我从文档中看到的那样,我认为我做得对。但是,我一定是错过了什么,所以我希望有人能向我指出一些事情。一旦在系统中在首选项文件中创建文件名后,我可能会对文件名进行硬编码,以便稍后在第一次创建设置时访问,但我不应该做我想的那样的事情。

4

1 回答 1

1

fileList()仅查看getFilesDir(),而不查看其子目录,例如您通过 . 创建的子目录getDir()。请改用标准 Java 文件 I/O(例如list())。

于 2013-07-12T14:42:07.303 回答