如何 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()
方法。但是它有一些局限性,如果你对它感兴趣,我可以提供一些代码。
我的目标是使用 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()
方法。但是它有一些局限性,如果你对它感兴趣,我可以提供一些代码。