2013-06-12 2 views
1

У меня есть текстовый файл, загруженный в мою учетную запись Azure. Теперь, в моей рабочей роли, мне нужно делать каждый раз, когда она запускается, она извлекает некоторый контент из базы данных и это содержимое должно быть записано в загруженном текстовом файле, в частности, каждый раз, когда содержимое текстового файла должно быть перезаписано каким-либо новым контентом.Запись текста в Azure storage

Here, они дали способ загрузить текстовый файл в хранилище, а также удалить файл. Но я не хочу этого делать, вам нужно просто ИЗМЕНИТЬ уже существующий текстовый файл каждый раз.

+0

Я не уверен, в чем вопрос здесь. Когда вы загружаете файл в хранилище blob и, если существует куча с тем же именем, blob будет перезаписан последним контентом. –

+0

ok..didnt знаю, что..thanks много .. – Spandan

ответ

5

Я предполагаю, что вы имеете в виду сохранение файла в блоке Windows Azure. Если это так: blob - это не файловая система; это просто место для хранения данных (а понятие файла немного искусственное - это просто ... блоб, хранящийся в кучке блоков).

Чтобы изменить файл, вам необходимо скачать его и сохранить его на локальном диске, изменить его (опять же, на локальном диске), а затем выполнить загрузку. Несколько мыслей об этом:

  • Для этой цели вы должны выделить локальный диск в конфигурации своей рабочей роли. Этот диск будет логическим диском, созданным на локальном физическом диске внутри машины, на которой работает vm. Другими словами, он будет прикреплен к хранилищу и идеально подходит для такого типа использования.
  • Пропускная способность между вашим экземпляром vm и памятью составляет 100 Мбит/с на ядро. Итак, захват 10 МБ-файла, в то время как на маленьком экземпляре, возможно, займет секунду. На XL, может быть, около десятой доли секунды. очень быстрая и зависит от серии VM (A, D, G) и размера.
  • Поскольку ваш файл находится в хранилище blob, если вы так на это склонны (или нуждаетесь в этом), вы можете сделать снимок перед загрузкой обновленной версии. Снимки похожи на списки ссылок на ваши сохраненные блоки данных. И нет никаких затрат на моментальные снимки, пока в один прекрасный день вы не измените существующие данные (и теперь у вас будут блоки, представляющие как старые, так и новые данные). Отличный способ сохранить версии blob на основе blob-by-blob (и тривиально удалить моментальные снимки).

Просто убедитесь, что этот шаблон загрузки/изменения/загрузки ясен, вот очень простой пример (я просто быстро набрал это в Visual Studio, но не протестировал его. Просто попытаюсь проиллюстрировать точку):

 // initial setup 
     var acct = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 
     var client = acct.CreateCloudBlobClient(); 

     // what you'd call each time you need to update a file stored in a blob 
     var blob = client.GetContainerReference("mycontainer").GetBlockBlobReference("myfile.txt"); 
     using (var fileStream = System.IO.File.OpenWrite(@"path\myfile.txt")) 
     { 
      blob.DownloadToStream(fileStream); 
     } 

     // ... modify file... 

     // upload modified file 
     using (var fileStream = System.IO.File.OpenWrite(@"path\myfile.txt")) 
     { 
      blob.UploadFromStream(fileStream); 
     } 
+0

извините, если я абсурд, но я никак не могу изменить этот файл, не выполняя эту выборку и загрузку ... как мы делаем это с простым файлом, хранящимся в нашей локальная машина .. – Spandan

+0

Ты не абсурд. Вы просто пытаетесь обрабатывать хранилище blob, как файловую систему. Если это действительно единственный способ изменить файлы, подумайте о монтировании диска (в основном vhd внутри блочного блога), а затем обработайте его так же, как файловая система. Тем не менее: у этого есть минусы (например, невозможность совместного использования этого диска с другими виртуальными машинами, поскольку он может быть присоединен только к одной виртуальной машине). Я изменяю свой ответ, чтобы показать вам тривиальный фрагмент кода для загрузки/изменения/загрузки. –