Windows Phone 7 обновляет изолированное хранилище - PullRequest
0 голосов
/ 20 января 2012

В Windows Phone 7, каков протокол обновления изолированного текстового файла хранилища?Скажем, у меня есть 10 слов в текстовом файле по 1 в строке.Теперь предположим, что пользователь использует приложение, и в пятой строке необходимо сохранить новое слово.Как мне записать в файл, который уже содержит 10 слов по 1 слову в строке?

Заранее спасибо, ребята, вы потрясающие.

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Запись в файл в изолированном хранилище - это в основном операция записи файла.Это похоже на то, как вы будете обращаться к обычному файлу и читать и записывать в него в обычной операционной системе.в вашем сценарии, если вы уверены, что вам нужно обновить 5-ю строку из 10 строк, вы будете читать построчно с помощью потокового считывателя и использовать потоковый записывающий модуль для обновления конкретной строки, которую вы хотите обновить.Вам не нужно переписывать весь контент снова и снова.

С другой стороны, если вы просто хотите добавить новый контент, вы можете просто добавить его в конец файла.Вы можете найти эту ссылку полезной http://goo.gl/IKii5

0 голосов
/ 20 января 2012

Как я это делал:

  1. Чтение в файле из IsolatedStorage в menmory
  2. Обновление строки
  3. Запись файла обратно в хранилище

Чтение в файле

public static string ReadFromStorage(string filename)
{
    string fileText = "";
    try
    {
        using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (StreamReader sr = new StreamReader(new IsolatedStorageFileStream(filename, FileMode.Open, storage)))
            {
                fileText = sr.ReadToEnd();
            }
        }
    }

    catch
    {
    }

    return fileText;
}

Запись в файл

public static void WriteToStorage(string filename, string text)
{
    try
    {
        using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            string directory = Path.GetDirectoryName(filename);
            if (!storage.DirectoryExists(directory))
                storage.CreateDirectory(directory);

            if (storage.FileExists(filename))
            {
                MessageBoxResult result = MessageBox.Show(filename + " Exists\nOverwrite Existing File?", "Question", MessageBoxButton.OKCancel);

                if (result == MessageBoxResult.Cancel)
                    return;
            }

            using (StreamWriter sw = new StreamWriter(storage.CreateFile(filename)))
            {
                sw.Write(text);
            }
        }
    }

    catch
    {
    }
}

Итак, я бы сделал:

string fileName = "Test.txt";
string testFile = IsolatedStorage_Utility.ReadFromStorage(fileName);
testFile = testFile.Replace("a", "b");
IsolatedStorage_Utility.WriteToStorage(fileName, testFile);
...