C# 读取文本文件时忽略页眉和页脚行

C# 读取文本文件时忽略页眉和页脚行,c#,C#,这是我目前的代码: string _nextLine; string[] _columns; char[] delimiters; delimiters = "|".ToCharArray(); using (StreamReader _reader = ...) { _nextLine = _reader.ReadLine(); while (_nextLine != null) { _columns = _nextLine.Split(delim

这是我目前的代码:

string _nextLine;
string[] _columns;
char[] delimiters;

delimiters = "|".ToCharArray();

using (StreamReader _reader = ...)
{
    _nextLine = _reader.ReadLine();

    while (_nextLine != null)
    {
        _columns = _nextLine.Split(delimiters);
        JazzORBuffer.AddRow();
        JazzORBuffer.Server = _columns[0];
        JazzORBuffer.Country = _columns[1];
        JazzORBuffer.QuoteNumber = _columns[2];
        _nextLine = _reader.ReadLine();
    }
}
我的文件的前5行如下所示:

PRODUCTS created betwen x and y Column 1 Header | Columns 2 Header | Column 3 Header | Column 4 Header | Wendy Z| Dave | John | Steve | Wendy Z| Dave | John | Steve | Total number of prods| 49545 在x和y之间创建的产品 第1列标题|第2列标题|第3列标题|第4列标题| 温迪·Z |戴夫|约翰|史蒂夫| 最后3行如下所示:

PRODUCTS created betwen x and y Column 1 Header | Columns 2 Header | Column 3 Header | Column 4 Header | Wendy Z| Dave | John | Steve | Wendy Z| Dave | John | Steve | Total number of prods| 49545 温迪·Z |戴夫|约翰|史蒂夫| 产品总数| 49545
我需要在代码中更改什么,以便忽略文件中的前3行和最后一行?

我不能100%确定我是否理解此问题,但请尝试:

string[] lines = File.ReadAllLines("FilePath");
string[] _columns;

//Start at index 2 - and keep looping until index Length - 2
for (int i = 2; i < lines.Length - 2; i++)
{
    _columns = lines[i].Split('|');
    JazzORBuffer.AddRow();
    JazzORBuffer.Server = _columns[0];
    JazzORBuffer.Country = _columns[1];
    JazzORBuffer.QuoteNumber = _columns[2];
}
string[]lines=File.ReadAllLines(“文件路径”);
字符串[]_列;
//从索引2开始-并保持循环,直到索引长度为-2
对于(int i=2;i

注意-通过一次性将整个文件读入内存,这将改变您正在执行的操作的性能。如果是一个非常大的文件,这可能无法执行。如果是,请这样说:)

我不能100%确定我理解这个问题,但请尝试:

string[] lines = File.ReadAllLines("FilePath");
string[] _columns;

//Start at index 2 - and keep looping until index Length - 2
for (int i = 2; i < lines.Length - 2; i++)
{
    _columns = lines[i].Split('|');
    JazzORBuffer.AddRow();
    JazzORBuffer.Server = _columns[0];
    JazzORBuffer.Country = _columns[1];
    JazzORBuffer.QuoteNumber = _columns[2];
}
string[]lines=File.ReadAllLines(“文件路径”);
字符串[]_列;
//从索引2开始-并保持循环,直到索引长度为-2
对于(int i=2;i


注意-通过一次性将整个文件读入内存,这将改变您正在执行的操作的性能。如果是一个非常大的文件,这可能无法执行。如果是,请这样说:)

能否请您详细解释您试图解决的问题只是好奇,为什么您的一些局部变量以?开始尝试导入一个包含200个文本文件的目录,其中列数可能会有所不同。前40个将是固定的,并且总是在那里,剩余的60个将因它们可能与其中一些不同而有所不同。因此,在SSIS数据流中执行脚本转换任务,一次性将所有文本文件放入数据库。为了清楚地识别它们…请您详细解释一下您试图解决的问题好吗,为什么有些局部变量以x开头?尝试导入一个包含200个文本文件的目录,其中的列数可能会有所不同。前40个将是固定的,并且总是在那里,剩余的60个将因它们可能与其中一些不同而有所不同。因此,在SSIS数据流中执行脚本转换任务,一次性将所有文本文件放入数据库。为了清楚地识别它们…+1是一个好答案,但有一个建议和一个限制。建议:使用简单的行
string[]columns=lines[i].Split(“|”)而不是拆分声明和初始化。限制:这只适用于可以完全放在内存中的小文件,否则File.ReadAllLines将失败。在大文件的情况下,这可能是一个合适的替代品。但是,ReadLines的问题是,您不知道什么时候到达了第二行到最后一行,除非您对文件进行冗余传递,并计算所有行。无论哪种方式,您都有性能限制。我尝试此操作时遇到此错误。错误1当前上下文中不存在名称“i”。此方法有效。但对我来说,由于某种原因,它停在49155行。很奇怪!可以提供机密数据。啊@不,你不知道你是否到达了倒数第二行,但你不需要两次传球就能忽略最后一行。您可以将最近的两行保留在内存中,并且在读取当前行时处理上一行。一旦点击文件的最后一行,您将处理倒数第二行,因此您永远不会处理最后一行(这是所需的行为)。这个想法不像您的解决方案那样清晰或易于解释,但它确实允许处理非常大的文件。+1是一个很好的答案,但有一个建议和一个限制。建议:使用简单的行
string[]columns=lines[i].Split(“|”)而不是拆分声明和初始化。限制:这只适用于可以完全放在内存中的小文件,否则File.ReadAllLines将失败。在大文件的情况下,这可能是一个合适的替代品。但是,ReadLines的问题是,您不知道什么时候到达了第二行到最后一行,除非您对文件进行冗余传递,并计算所有行。无论哪种方式,您都有性能限制。我尝试此操作时遇到此错误。错误1当前上下文中不存在名称“i”。此方法有效。但对我来说,由于某种原因,它停在49155行。很奇怪!可以提供机密数据。啊@不,你不知道你是否到达了倒数第二行,但你不需要两次传球就能忽略最后一行。您可以将最近的两行保留在内存中,并且在读取当前行时处理上一行。一旦点击文件的最后一行,您将处理倒数第二行,因此您永远不会处理最后一行(这是所需的行为)。这个想法不像您的解决方案那样清晰或易于解释,但它确实允许处理非常大的文件。