在内存中创建文本文件,然后将其上传到 Azure Blob 存储
Create text file in memory then upload it to Azure Blob Storage
现在,我正在借助库在内存中创建一个 Parquet 文件,并将其上传到 Azure Blob storage
。但是,这次我想要更简单的东西,即只是一个文本文件,用于将 DateTime.UtcNow
写入内存中的文本文件并将其上传到 Azure。
到目前为止我的代码:
BlobServiceClient BlobServiceClient = new BlobServiceClient("my_code");
var containerClient = BlobServiceClient.GetBlobContainerClient("my_container");
var blobClient = containerClient.GetBlockBlobClient($"path/to/specific/directory/file.parquet");
using (var outStream = await blobClient.OpenWriteAsync(true).ConfigureAwait(false))
using (ChoParquetWriter parser = new ChoParquetWriter(outStream))
{
parser.Write(data_list);
}
如何在没有 ChoParquetWriter
的情况下在内存中创建文本文件,它是我正在使用的库的一部分?
更新:找到解决方法
using (var outStream = await blobClient4.OpenWriteAsync(true).ConfigureAwait(false))
{
byte[] bytes = null;
using (var ms = new MemoryStream())
{
TextWriter tw = new StreamWriter(ms);
tw.Write(RequestTime.ToString());
tw.Flush();
ms.Position = 0;
bytes = ms.ToArray();
ms.WriteTo(outStream);
}
}
有没有更简单的方法?如果不是这样也没关系
我可能过于简单化了,但是你创建的文本编写器不能直接写入outStream吗?只需确保将文本编写器也包含在 using 语句中,以便它正确刷新...
如果直接用UploadAsync
或Upload
的方法会简单一些
例如:
//other code
var blobClient4 = containerClient.GetBlockBlobClient("xxx");
using (var ms = new MemoryStream())
{
StreamWriter writer = new StreamWriter(ms);
writer.Write(RequestTime.ToString());
writer.Flush();
ms.Position = 0;
await blobClient4.UploadAsync(ms);
}
现在,我正在借助库在内存中创建一个 Parquet 文件,并将其上传到 Azure Blob storage
。但是,这次我想要更简单的东西,即只是一个文本文件,用于将 DateTime.UtcNow
写入内存中的文本文件并将其上传到 Azure。
到目前为止我的代码:
BlobServiceClient BlobServiceClient = new BlobServiceClient("my_code");
var containerClient = BlobServiceClient.GetBlobContainerClient("my_container");
var blobClient = containerClient.GetBlockBlobClient($"path/to/specific/directory/file.parquet");
using (var outStream = await blobClient.OpenWriteAsync(true).ConfigureAwait(false))
using (ChoParquetWriter parser = new ChoParquetWriter(outStream))
{
parser.Write(data_list);
}
如何在没有 ChoParquetWriter
的情况下在内存中创建文本文件,它是我正在使用的库的一部分?
更新:找到解决方法
using (var outStream = await blobClient4.OpenWriteAsync(true).ConfigureAwait(false))
{
byte[] bytes = null;
using (var ms = new MemoryStream())
{
TextWriter tw = new StreamWriter(ms);
tw.Write(RequestTime.ToString());
tw.Flush();
ms.Position = 0;
bytes = ms.ToArray();
ms.WriteTo(outStream);
}
}
有没有更简单的方法?如果不是这样也没关系
我可能过于简单化了,但是你创建的文本编写器不能直接写入outStream吗?只需确保将文本编写器也包含在 using 语句中,以便它正确刷新...
如果直接用UploadAsync
或Upload
的方法会简单一些
例如:
//other code
var blobClient4 = containerClient.GetBlockBlobClient("xxx");
using (var ms = new MemoryStream())
{
StreamWriter writer = new StreamWriter(ms);
writer.Write(RequestTime.ToString());
writer.Flush();
ms.Position = 0;
await blobClient4.UploadAsync(ms);
}