2013-06-12 5 views
1

Ниже приведен код, который сначала сохранит строку текста, в текстовый файл, присутствующий в лазурном хранилище, а затем прочитайте его и распечатайте.Чтение и запись текстового файла в Azure Storage

string firstString = "this \t is \n a \t line \n are: ";    

      using (var memoryStream = new MemoryStream()) 
      { 
       memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length); 
       blockBlob.UploadFromStream(memoryStream); 
      } 

      string text; 
      using (var memoryStream = new MemoryStream()) 
      { 
       blockBlob.DownloadToStream(memoryStream); 
       text = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray()); 
       Trace.WriteLine(text); 
      } 

Проблема в том, что ничто не печатается в заявлении Trace.Writeline().

Сначала я подумал, что это может быть проблема с кодировкой, поэтому я изменил формат своего текстового файла с ASCII на UTF8, но до сих пор ничего не печатается. Что мне здесь не хватает, любая помощь приветствуется.

ответ

2

Замените следующую строку кода:

using (var memoryStream = new MemoryStream()) 
      { 
       memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length); 
       blockBlob.UploadFromStream(memoryStream); 
      } 

с

using (var memoryStream = new MemoryStream()) 
    { 
     memoryStream.Write(System.Text.Encoding.UTF8.GetBytes(firstString), 0, System.Text.Encoding.UTF8.GetBytes(firstString).Length); 
     memoryStream.Position = 0; 
     blob.UploadFromStream(memoryStream); 
    } 

Что происходит, что когда вы пишете массив в memoryStream, вы не сбросить позицию потока до 0 таким образом, загружается 0-байтовая блоба.

+0

спасибо!. – Spandan

+0

@Gaurav Mantri Каково решение, если это растровое изображение (не текст) –

+0

@BasharAbuShamaa То же решение. То же самое должно работать. –

0

При использовании MemoryStream вы первый записей в память и после записи из памяти в сгусток, то лучше писать прямо сгусток, пример:

using (var blobStream = blockBlob.OpenWrite()) 
    { 
     var data = System.Text.Encoding.UTF8.GetBytes(firstString); 
     blobStream.Write(data, 0, data.Length); 
    } 
Смежные вопросы