Есть ли лучший способ узнать, существует ли файл IsolatedStorage или нет? - PullRequest
3 голосов
/ 14 апреля 2010

Я использую IsolatedStorage в Silverlight приложении для кэширования, поэтому мне нужно знать, существует файл или нет, что я делаю с помощью следующего метода.

Я не смог найти FileExists метод для IsolatedStorage, поэтому я просто ловлю исключение, но, похоже, это довольно общее исключение , я обеспокоен тем, что это поймать больше, чем если файл не существует.

Есть ли лучший способ узнать, существует ли файл в IsolatedStorage, чем этот:

public static string LoadTextFromIsolatedStorageFile(string fileName)
{
    string text = String.Empty;

    using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
    {
        try
        {
            using (IsolatedStorageFileStream isfs = new IsolatedStorageFileStream(fileName,
                            FileMode.Open, isf))
            {
                using (StreamReader sr = new StreamReader(isfs))
                {
                    string lineOfData = String.Empty;
                    while ((lineOfData = sr.ReadLine()) != null)
                        text += lineOfData;
                }
            }
            return text;
        }
        catch (IsolatedStorageException ex)
        {
            return "";
        }
    }
}

1 Ответ

4 голосов
/ 14 апреля 2010

Из «руководства» (.net Framework 2.0 Application Development Foundation):

В отличие от интерфейса прикладного программирования (API) для файлов, хранящихся произвольно в файловой системе API для файлов в изолированном хранилище не поддерживает проверку для существования файла прямо как File.Exists делает. Вместо этого вам нужно спросить хранить список файлов, которые соответствуют определенной маске файла. Если он найден, вы можете открыть файл, как показано в этом примере

string[] files = userStore.GetFileNames("UserSettings.set");
if (files.Length == 0)
{
Console.WriteLine("File not found");
}
else
{
    // ...

} 
...