2016-04-25 1 views
0

Недавно я хотел узнать больше о fileOpenPickers и решил создать проект. Я сделал FilOpenPicker. Когда я выбираю текстовый файл из FileOpenPicker, я хотел бы показать его в текстовом блоке. Но я действительно не знаю, как это сделать. Далее у меня есть кнопка сохранения и кнопка открытия. Когда я нажимаю save, он должен сохранять текст из OpenFilePicker где-то на моем компьютере. Я набрал какой-то код, но это совсем не хорошо.Как я могу показать текст из текстового файла в текстовом блоке? Xaml, BlankApp, Window8

Вот мой код:

private async void btnOpen_Click(object sender, RoutedEventArgs e) 
{ 
    FileOpenPicker picker = new FileOpenPicker(); 
    picker.FileTypeFilter.Add(".log"); 
    StorageFile result = await picker.PickSingleFileAsync(); 

    if (result != null) 
    { 
     try 
     { 
      await FileIO.WriteTextAsync(result, txtInhoud.Text); 
      txtInhoud.Text = result.ToString(); 
     } 
     catch (Exception) 
     { 
      txtInhoud.Text = result.ToString(); 
     } 
    } 

} 

private async void btnSave_Click(object sender, RoutedEventArgs e) 
{ 
    StorageFolder folder = ApplicationData.Current.RoamingFolder; 
    StorageFile file = await folder.CreateFileAsync("MyFolder\\MyFile.txt", 
    CreationCollisionOption.ReplaceExisting); 
    if (file != null) 
    { 
     await FileIO.WriteTextAsync(file, "data"); 
    } 
} 

Я надеюсь, что вы можете мне помочь! Я извиняюсь за мой плохой английский.

+0

Можете ли вы более подробно объяснить, какая часть этого кода работает нормально, а какая часть не является и что это делает, это неправильно? –

+0

Да, я это сделаю. FileOpenPicker хорош. Он открывается, и я могу подобрать текстовый файл, который у меня есть на моем компьютере. Что не работает, так это то, как я хочу поместить данные из файла в текстовый блок и как сохранить данные на моем компьютере, который находится в текстовом поле после его заполнения. Надеюсь, вы понимаете, что я имею в виду. И я надеюсь, ты сможешь избавиться от меня! – Xaml

ответ

0

От того, как вы открываете сборщик файлов, я предполагаю, что вы ориентируетесь на Windows Phone 8.0 Silverlight?

В этом случае метод FileIO.WriteTextAsync не будет работать, так как он специфичен для платформы WinRT. Вместо этого используйте метод StorageFile.OpenAsync и передайте либо Read, либо ReadWrite в качестве режима доступа. Обе версии возвратят поток, который вы можете записать в/read.

Например, код для сохранения текстового поля»содержание может выглядеть следующим образом:

var stream = await file.OpenAsync(FileAccessMode.ReadWrite); 
using (var writer = new DataWriter(stream.GetOutputStreamAt(0))) 
{ 
    writer.WriteString(txtInhoud.Text); 
    await writer.StoreAsync(); 
    await writer.FlushAsync(); 
} 

Для получения более подробной информации (и пример чтения файлов), см this blog post (разделы Запись файла и Читать Файл)!