如何 write/modify/add 存储在 Azure 文件存储中的文件中的某些文本?

How to write/modify/add some text in a file stored in azure file storage?

我的目标是使用 WindowsAzure.Storage API 修改 Azure 文件存储中的 .txt 文件。我想知道是否有任何方法可以在文件中添加一些文本。

使用 System.IO API 更容易吗?

我已经尝试过 cloudFileStream.Write() 但它没有用。

谢谢

https://github.com/Azure/azure-storage-net/blob/master/Test/WindowsRuntime/File/FileStreamTests.cs 上的示例向您展示了如何执行此操作。

 public async Task FileOpenWriteTestAsync()
        {
            byte[] buffer = GetRandomBuffer(2 * 1024);
            CloudFileShare share = GetRandomShareReference();
            try
            {
                await share.CreateAsync();

                CloudFile file = share.GetRootDirectoryReference().GetFileReference("file1");
                using (CloudFileStream fileStream = await file.OpenWriteAsync(2048))
                {
                    Stream fileStreamForWrite = fileStream;
                    await fileStreamForWrite.WriteAsync(buffer, 0, 2048);
                    await fileStreamForWrite.FlushAsync();

                    byte[] testBuffer = new byte[2048];
                    MemoryStream dstStream = new MemoryStream(testBuffer);
                    await file.DownloadRangeToStreamAsync(dstStream, null, null);

                    MemoryStream memStream = new MemoryStream(buffer);
                    TestHelper.AssertStreamsAreEqual(memStream, dstStream);
                }
            }
            finally
            {
                share.DeleteIfExistsAsync().Wait();
            }
        }

如果你想在 Azure 文件存储上的文件中添加一些文本(追加到现有数据),没有直接的方法。您需要下载它,然后上传您要附加的文本。

            string accountName = "xxx";
            string key = "xxx";
            var storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, key), true);
            var share = storageAccount.CreateCloudFileClient().GetShareReference("testfolder");
            CloudFile file1 = share.GetRootDirectoryReference().GetFileReference("a.txt");

            //if you want to append some text from local file
            var stream1 = File.OpenRead("your file path in local, like d:\hello.txt");
            string from_local_file = (new StreamReader(stream1)).ReadToEnd();

            //if you just want to add some text from string, directly use the string
            //string from_local_file ="the text I want to append to azure file";


            //download the content of the azure file
            string from_azure_file = file1.DownloadText();

            //this does the trick like appending text to azure file, not overwrite
            file1.UploadText(from_azure_file + from_local_file);

如果您想直接将文本上传到存储在 Azure 文件存储中的文件,您应该使用以下方法之一:UploadText() / UploadFromFile() / UploadFromStream()请注意,这将覆盖 azure 文件中的现有数据。

如果要更新azure文件的上下文,可以使用WriteRange()方法。但是它有一些局限性,如果你对它感兴趣,我可以提供一些代码。