如何从 CSV 文件流中删除 Header
How to remove Header from a CSV FileStream
我必须解决 csv 文件上传的一组特定限制:
- 我将使用 'large' CSV 文件(包含 header 行)
- 我需要从 CSV 文件中删除第一个 header 行
- file-upload 代码需要一个 FileStream(不包含 header) 作为输入! (因为我被限制在此流之上做很多流操作(包含 headerless csv 数据))
包装器 C# 代码:
using (var stream = File.OpenRead("C:\~~~\~~~\~~~\SampleFile.csv"))
{
//CSV Header removal snippet - which gives me a new stream containing data without headers.
~
~
~
~
//All my stream handling code of chunking stream into 100mb and then uploading each chunk to azure storage (which is not part of this question)
}
现在我已经知道 - 我可以使用像 - CSVHelper
(How to exclude header when writing data to CSV)[=14= 这样的库简单地删除 csv 文件的 headers ]
使用上述方法我可以创建文件的 header-less 副本并将新文件作为 FileStream 读回 - 但问题是我正在处理大文件并制作文件副本只是删除 headers 将是一项 space-consuming 的工作。
所以第一次 - 我在 Whosebug 中提问 - 找到解决上述问题的好方法。我希望我能把问题解释清楚。
这应该可以找到第一行的末尾。
using (var stream = File.OpenRead("~~filepath~~"))
using (var reader = new StreamReader(stream))
{
string line = null;
if ((line = reader.ReadLine()) != null)
{
stream.Position = line.Length + 2;
// The 2 is for NewLine(\r\n)
}
//All my stream handling code of chunking stream into 100mb and then uploading each chunk to azure storage (which is not part of this question)
}
我必须解决 csv 文件上传的一组特定限制:
- 我将使用 'large' CSV 文件(包含 header 行)
- 我需要从 CSV 文件中删除第一个 header 行
- file-upload 代码需要一个 FileStream(不包含 header) 作为输入! (因为我被限制在此流之上做很多流操作(包含 headerless csv 数据))
包装器 C# 代码:
using (var stream = File.OpenRead("C:\~~~\~~~\~~~\SampleFile.csv"))
{
//CSV Header removal snippet - which gives me a new stream containing data without headers.
~
~
~
~
//All my stream handling code of chunking stream into 100mb and then uploading each chunk to azure storage (which is not part of this question)
}
现在我已经知道 - 我可以使用像 - CSVHelper
(How to exclude header when writing data to CSV)[=14= 这样的库简单地删除 csv 文件的 headers ]
使用上述方法我可以创建文件的 header-less 副本并将新文件作为 FileStream 读回 - 但问题是我正在处理大文件并制作文件副本只是删除 headers 将是一项 space-consuming 的工作。
所以第一次 - 我在 Whosebug 中提问 - 找到解决上述问题的好方法。我希望我能把问题解释清楚。
这应该可以找到第一行的末尾。
using (var stream = File.OpenRead("~~filepath~~"))
using (var reader = new StreamReader(stream))
{
string line = null;
if ((line = reader.ReadLine()) != null)
{
stream.Position = line.Length + 2;
// The 2 is for NewLine(\r\n)
}
//All my stream handling code of chunking stream into 100mb and then uploading each chunk to azure storage (which is not part of this question)
}