Jay Snayder
Jay Snayder

Reputation: 4338

Not finding local data files saved in my application

The process seemed quite simplistic at first, but there must be something that I am missing going forward with this task. There was a settings file that I wanted to create local to my application for storing a whole bunch of data (not preference worthy). I ended up saving the file with the following code snippet.

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;
}

and then proceeded to retrieve the file later by looking for it locally with the following code snippets.

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

However, the settingFilesInFolder always returns no entries, so I get null back from the getCurrentFileContainingSettings(). As what I could see from the documentation it seems as thought I was doing it right. But, I must be missing something, so I was hoping that someone could point something out to me. I could potentially hard-code the file name once it has been created within the system in a preference file for access later the first time that the settings are created, but I shouldn't have to do something like that I would think.

Upvotes: 1

Views: 89

Answers (1)

CommonsWare
CommonsWare

Reputation: 1006674

fileList() only looks in getFilesDir(), not in its subdirectories, such as the one you created via getDir(). Use standard Java file I/O (e.g., list()) instead.

Upvotes: 1

Related Questions