чтение текстового файла из файлового хранилища Azure методом

#c# #filestream #asp.net-core-3.1 #azure-storage-files

#c# #filestream #asp.net-core-3.1 #azure-storage-files

Вопрос:

Я хочу прочитать содержимое файла csv, который у меня есть в моем файловом хранилище на моем storageaccount в Azure, используя Azure.Storage.Files.Shares library.

Я могу подключиться к файлу с помощью ShareFileClient , но как я могу затем прочитать содержимое и обработать их (добавить новую строку) в моем коде?

 ShareFileClient file = ConnectToFile();
Steam content = await file.OpenReadAsync(true);
// gives a Stream object, that I cannot get to work to get the content.
  

Каковы следующие шаги для потоковой передачи содержимого этого файла? Я застрял, пытаясь заставить действие чтения работать с чем-то вроде

 using (Steam stream = new Stream() )
{       
 
    // The actions to read the stream go here 
}
  

Любые предложения о том, как этого можно достичь?

Комментарии:

1. У вас есть какие-либо другие проблемы? Если у вас нет других проблем, не могли бы вы принять это как ответ?

Ответ №1:

Что касается проблемы, пожалуйста, обратитесь к следующему коду

  // read
            using (var stream = await file.OpenReadAsync().ConfigureAwait(false))
            using (var reader = new StreamReader(stream)) {
                // read csv file one line by line 
                while (!reader.EndOfStream) {
                  var line =await  reader.ReadLineAsync().ConfigureAwait(false);
                    Console.WriteLine(line);
                }
            }

            //write
            ShareFileProperties properties = await file.GetPropertiesAsync().ConfigureAwait(false);
            var myPosition = properties.ContentLength;
            var newData = "42,11,58, "N",85,12,45, "W", "Worcester", ND" Environment.NewLine;
            var bytes = Encoding.UTF8.GetBytes(newData);
            await file.SetHttpHeadersAsync(myPosition   bytes.Length);
            using (var writer = await file.OpenWriteAsync(overwrite: false, position:(myPosition -1)).ConfigureAwait(false)) {
               
                await writer.WriteAsync(bytes, 0, bytes.Length);
                await writer.FlushAsync();
            }