Windows Phone 8 - чтение и запись в существующий txt файл в проекте

Привет, я застрял в проблеме, я создал текстовый файл, который я поместил в приложение. Я пытаюсь прочитать с него содержимое, которое я написал на нем раньше. С этим кодом:

    public async Task WriteDataToFileAsync(string fileName, string content)
    {
        byte[] data = Encoding.Unicode.GetBytes(content);

        var folder = ApplicationData.Current.LocalFolder;
        var file = await folder.CreateFileAsync(fileName,CreationCollisionOption.ReplaceExisting);

        using (var s = await file.OpenStreamForWriteAsync())
        {
            await s.WriteAsync(data, 0, data.Length);
        }
    }

    public async Task<string> ReadFileContentsAsync(string fileName)
    {
        var folder = ApplicationData.Current.LocalFolder;

        try
        {
            var file = await folder.OpenStreamForReadAsync(fileName);

            using (var streamReader = new StreamReader(file))
            {
                return streamReader.ReadToEnd();
            }
        }
        catch (Exception)
        {
            MessageBox.Show("Error");
            return string.Empty;
        }
    }

    private async void functionWhereNeedReeding()
    {
        string contents = await this.ReadFileContentsAsync("myimportedfile.txt");
        MessageBox.Show(contents);
    }

Дайте мне все время сообщение об ошибке, и я не могу понять, где моя ошибка. Надеюсь, что вы мне поможете. Наверняка содержимое все еще пусто.


person Roberto    schedule 15.01.2014    source источник


Ответы (1)


Недавно я создал вспомогательную функцию в своем проекте WP 7 для чтения текстового файла, включенного в проект. Вы можете попробовать использовать его, функция также работает в проекте WP 8:

public static class FileHelper
{
    public static string ReadFile(string filePath)
    {
        var ResrouceStream = Application.GetResourceStream(new Uri(filePath, UriKind.Relative));
        if (ResrouceStream != null)
        {
            Stream myFileStream = ResrouceStream.Stream;
            if (myFileStream.CanRead)
            {
                StreamReader myStreamReader = new StreamReader(myFileStream);

                return myStreamReader.ReadToEnd();
            }
        }
        return "";
    }
}

Затем я могу использовать эту функцию следующим образом (в этом примере файл находится в папке «Активы»):

var textFileContent = FileHelper.ReadFile(@"Assets\MyTextFile.txt");
person har07    schedule 15.01.2014
comment
Действительно идеально! Наконец это работает! Но извините меня за то, что я пишу (и заменяю текст, который я вставил, новым, я должен создать публичную функцию, подобную этой, правильно? (Я не добавлял функцию записи, которую я написал, но я делаю это сейчас. - person Roberto; 15.01.2014