2015-02-18 5 views
0

Я пишу строку Datetime в файле и после этого пытаюсь ее прочитать, но строка возвращает чередующиеся с нулевыми символами. Инструменты WP Power показывают строку без изменений «18.02.2015 12:08:17». Но после прочтения это выглядит так: «1 \ 08 \ 0. \ 00 \ 02 \ 0. \ 02 \ 00 \ 01 \ 05 \ 0 \ 01 \ 02 \ 0: \ 00 \ 08 \ 0: \ 01 \ 07 \ 0"Windows Phone 8.0 read file from IsolatedStorage

await FileExtensions.WriteDataToFileAsync("scheduleDateTime.txt", scheduleTime); 

var contents = await FileExtensions.ReadFileContentsAsync("scheduleDateTime.txt"); 


public static async Task<String> ReadFileContentsAsync(string fileName) 
{    
    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder; 

    if (local != null) 
    { 
     var file = await local.OpenStreamForReadAsync(fileName); 
     using (StreamReader streamReader = new StreamReader(file)) 
     { 
      return streamReader.ReadToEnd(); 
     } 
    } 
    else 
    { 
     return String.Empty; 
    } 
} 

public static 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); 
    } 
} 

ответ

1

Вы сохраните файл, используя UTF-16 кодировке, но читать его обратно, используя кодировку по умолчанию (то есть, UTF-8). Вам нужно использовать ту же кодировку для обоих случаев.

Обычно recommandation является использование UTF-8 для чтения и записи в файлы, так что вы должны изменить свой WriteDataToFileAsync метод:

public static async Task WriteDataToFileAsync(string fileName, string content) 
{ 
    byte[] data = Encoding.UTF8.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); 
    } 
} 
+0

Очевидно я неверно Unicode в UTF-8, как рекомендуется по умолчанию , Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^