Как мне записать в файл? - PullRequest
       3

Как мне записать в файл?

0 голосов
/ 29 февраля 2012

У меня проблема с Windows Phone 7, из-за которой я не смог найти ответ. Я пытаюсь записать что-то из текстового поля в простой текстовый файл, который есть в моих файлах проекта. Я пытался использовать StreamWriter, но работает только StreamReader, я решил использовать IsolatedStorage, но опять-таки это не сработало. Поэтому, пожалуйста, может быть, вы найдете мне решение этой проблемы?

EDIT: код, который я использовал:

var myStore = IsolatedStorageFile.GetUserStoreForApplication();
// Specify the file path and options.
using (var isoFileStream = new IsolatedStorageFileStream("/Discount%20it;component/Tax.txt", FileMode.OpenOrCreate, myStore))
{
    //Write the data
    using (var isoFileWriter = new StreamWriter(isoFileStream))
    {
        isoFileWriter.WriteLine(textBox1.Text);
    }
}

string fileName = "/Discount%20it;component/Tax.txt";

using (var isoStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
    // we need to check to see if the file exists
    if (!isoStorage.FileExists(fileName))
    {
        // file doesn't exist...time to create it.
        isoStorage.CreateFile(fileName);
    }

    // since we are appending to the file, we must use FileMode.Append
    using (var isoStream = new IsolatedStorageFileStream(fileName, FileMode.Append, isoStorage))
    {
        // opens the file and writes to it.
        using (var fileStream = new StreamWriter(isoStream))
        {
            fileStream.Write(textBox1.Text);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 01 марта 2012

Файлы, которые распространяются как часть xap, не (легко) модифицируются.

Обычно, если у вас есть данные, которые вы хотите обновить и сохранить в файле, вы должны сделать это в IsolatedStorage.

Предполагая, что вы отправляете данные по умолчанию в файл как часть XAP, вам нужно будет сделать следующее:

Когда вы хотите прочитать данные: - проверьте, находится ли файл вIsolatedStorage существует.
- Если он выполняет чтение, то
- Если он не выполняет чтение из файла, поставляемого с XAP

При желании записать данные:
- записать его в IsolatedStorage и перезаписать любой существующий файл / данные.

0 голосов
/ 29 февраля 2012

На MSDN есть раздел , который объясняет это.Разве это не работает?

Пример кода, показанного на этой странице:

private void btnWrite_Click(object sender, RoutedEventArgs e)
{
    // Obtain the virtual store for the application.
    IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();

    // Create a new folder and call it "MyFolder".
    myStore.CreateDirectory("MyFolder");

    // Specify the file path and options.
    using (var isoFileStream = new IsolatedStorageFileStream("MyFolder\\myFile.txt", FileMode.OpenOrCreate, myStore))
    {
        //Write the data
        using (var isoFileWriter = new StreamWriter(isoFileStream))
        {
            isoFileWriter.WriteLine(txtWrite.Text);
        }
    }
}

Теперь вы заметите, что вам нужно программно создать каталог в изолированном хранилище, прежде чем пытаться записатьфайл для него.

В целях разработки каталог и файл будут созданы на вашем компьютере разработки в каталоге, как показано на этой странице .Если вы разрабатываете на компьютере под управлением Windows 7, я ожидаю, что вы найдете свой изолированный каталог и файл в том же месте, что и Vista, например, для не перемещаемого профиля пользователя Users<username>AppData\Local.

, поэтому длякод выше, ваш файл должен быть в <username>\AppData\Local\MyFolder.

Эта строка в коде:

IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();

Сопоставляет ваше изолированное хранилище с <username>\AppData\Local на компьютере разработчика и вызывает его myStore.

Эта строка создает каталог, в который вы затем можете записать:

myStore.CreateDirectory("MyFolder");

Чтобы ваше приложение считывало из этого файла пример кода:

// This code opens and reads the contents of myFile.txt.
private void btnRead_Click(object sender, RoutedEventArgs e)
{
    // Obtain a virtual store for the application.
    IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();

    try
    {
        // Specify the file path and options.
        using (var isoFileStream = new IsolatedStorageFileStream("MyFolder\\myFile.txt", FileMode.Open, myStore))
        {
            // Read the data.
            using (var isoFileReader = new StreamReader(isoFileStream))
            {
                txtRead.Text = isoFileReader.ReadLine();
            }
        }

    }
    catch
    {
        // Handle the case when the user attempts to click the Read button first.
        txtRead.Text = "Need to create directory and the file first.";
    }
}

Обратите внимание, как вам нужно снова узнать фактическое местоположение файла изолированного хранилища и указать имя каталога в пути к файлу при открытии файла.

Дополнительно (1/3/2012)

При использовании FileMode.Append убедитесь, что вы также используете FileAccess.Write.Вместо проверки, существует ли файл, просто используйте FileMode.OpenOrCreate.При использовании Silverlight убедитесь, что изолированное хранилище включено:

Start -> All Programs -> Microsoft Silverlight -> Microsoft Silverlight -> Application Storage -> make sure the 'enable application storage' checkbox is checked.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...