删除文件的最后一行,使用数据绘制图表c#

时间:2015-01-13 08:19:31

标签: c# file charts line

当我试图删除我的csv文件的最后一行时,当我试图绘制数据图表时,我遇到了麻烦。 我的文件包含大量数据,我通过以下代码获取:

public void StreamOpen()
    {
        Stream stream;

        OpenFileDialog getDialog = new OpenFileDialog();

        getDialog.Filter = "csv File|*.csv";
        getDialog.Title = "Get a .csv file";
        if (getDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            if ((stream = getDialog.OpenFile()) != null)
            {
                strFileName = getDialog.FileName;
                string[] filetext = File.ReadAllLines(strFileName);
            }
            stream.Flush();
        }
    }

    public void OpenFile()
    {
        if (!File.Exists(strFileName))
        {
            ListA();
            ListB();
        }
        if (strFileName != null)
        {
            var reader = new StreamReader(File.OpenRead(strFileName));
            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var values = line.Split(';');
                UpdateChart();

                listA.Add(values[0]);
                listB.Add(values[1]);
            }
        }

            ListA();
            ListB();
    }

问题是,在我文件的最后一行,我保存了一个像

这样的文本
  

“动作计数”+值

,我想在绘制该图表时跳过这个值,而不想在文本框中显示该值。 现在出现错误,listA和listB不一样,我明白为什么,因为最后一行是listA的一部分。

希望你能帮我删除最后一行,并帮我展示如何在文本框中保存该值。

文本文件中的输出:

09:03:28 ; 0 
09:03:29 ; 1 
09:03:30 ; 0 
09:03:31 ; 0 
Count of movements 2

2 个答案:

答案 0 :(得分:0)

这种方法怎么样:

string[] values = line.Split(';');
if(values.Length != expected_column_count) // then ignore

<小时/> 的修改

或者如果其他内容特殊关于不需要的行,例如它总是以相同的文字开头:

if(line.StartsWith(unwanted_prefix)) // then ignore

答案 1 :(得分:0)

将您的代码更改为此

while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            if (line.StartsWith("Count")) 
              break;
            /....
        }

如果最后一行以某个字符串

开头,则跳过