【发布时间】:2022-11-15 00:26:24
【问题描述】:
下面是一段较大代码的简化示例。基本上,我正在调用一个或多个 API 端点并下载一个写入 Azure Blob 容器的 CSV 文件。如果有多个文件,则会为每个加载的新 csv 文件附加 blob。
问题是,当我追加目标 blob 时,我最终在整个文件中散布了多个标题行,具体取决于我使用的 CSV 的数量。所有的 CSV 都有相同的标题行,我知道第一行总是有一个换行符。有没有办法读取流,跳过内容直到第一个换行符之后,然后将流复制到 blob?
在我看来这很简单,但我很难找到代码方面的方法。我不想等待整个文件下载,然后在内存中删除标题行,因为其中一些文件可能有几千兆字节。
如果有帮助,我正在使用 .net core v6
using Stream blobStream = await blockBlobClient.OpenWriteAsync(true);
{
for (int i = 0; i < 3; i++)
{
using HttpResponseMessage response = await client.GetAsync(downloadUrls[i], HttpCompletionOption.ResponseHeadersRead);
Stream sourceStream = response.Content.ReadAsStream();
sourceStream.CopyTo(blobStream);
}
}
【问题讨论】:
-
StreamReader 和 StreamWriter
标签: c# csv .net-core dotnet-httpclient streamreader