使用数据绘制图表时删除文件的最后一行c#
Delete last line of file, when using the data to draw a chart c#
当我试图删除我的 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();
}
问题是,在我文件的最后一行,我保存了一个像
这样的文本
"Count of movements" + value
,我想在绘制图表时跳过这个值,而是想在文本框中显示该值。
现在发生错误,listA 和 listB 不一样,我知道为什么,因为最后一行被视为 listA 的一部分。
希望你能帮我删除最后一行,并帮助我展示如何在文本框中保存该值。
文本文件中的输出:
09:03:28 ; 0
09:03:29 ; 1
09:03:30 ; 0
09:03:31 ; 0
Count of movements 2
这种方法怎么样:
string[] values = line.Split(';');
if(values.Length != expected_column_count) // then ignore
编辑
或者如果不需要的行有其他 特殊之处,例如它总是以相同的文本开头:
if(line.StartsWith(unwanted_prefix)) // then ignore
将您的代码更改为此
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (line.StartsWith("Count"))
break;
/....
}
如果最后一行以特定字符串开头则跳过
当我试图删除我的 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();
}
问题是,在我文件的最后一行,我保存了一个像
这样的文本"Count of movements" + value
,我想在绘制图表时跳过这个值,而是想在文本框中显示该值。 现在发生错误,listA 和 listB 不一样,我知道为什么,因为最后一行被视为 listA 的一部分。
希望你能帮我删除最后一行,并帮助我展示如何在文本框中保存该值。
文本文件中的输出:
09:03:28 ; 0
09:03:29 ; 1
09:03:30 ; 0
09:03:31 ; 0
Count of movements 2
这种方法怎么样:
string[] values = line.Split(';');
if(values.Length != expected_column_count) // then ignore
编辑
或者如果不需要的行有其他 特殊之处,例如它总是以相同的文本开头:
if(line.StartsWith(unwanted_prefix)) // then ignore
将您的代码更改为此
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (line.StartsWith("Count"))
break;
/....
}
如果最后一行以特定字符串开头则跳过