While循环检测文本文件的第一行
本文关键字:一行 循环 检测 文本 文件 While | 更新日期: 2023-09-27 18:15:31
我有一个程序,它加载文本文件以填充表单中的两个单独的列表框。它应该读取每一行,并将每一行添加到单个列表框中。由于某种原因,文本文件的第一行被忽略了,我不确定为什么。
这是文本文件中每一行的内容:
- cd Armor 1 True+
- bg Tool 2 False+
- 0武器3假-
- xz消耗品1 True-
我相信我的while循环是问题所在,但我不确定我做错了什么。我需要程序循环不止一行。当我在不使用循环的情况下运行代码时,文本文件的第一行被添加到适当的列表框中,没有问题。
下面的代码是附加到加载按钮在我的表单。
private void loadToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openTextFile = new OpenFileDialog();
openTextFile.Filter = "Text Files (*.txt) | *.txt";
string listItemString;
string[] listItem;
if (openTextFile.ShowDialog() == DialogResult.OK)
{
using (StreamReader openStream = new StreamReader(openTextFile.OpenFile()))
{
listItemString = openStream.ReadLine();
listItem = listItemString.Split(' ');
while ((listItemString = openStream.ReadLine()) != null)
{
if (listItemString.EndsWith("+"))
{
listItemString = listItemString.Replace("+", "");
cart.Items.Add(listItemString);
}
else if (listItemString.EndsWith("-"))
{
listItemString = listItemString.Replace("-", "");
delivery.Items.Add(listItemString);
}
}
}
}
}
您正在阅读代码listItemString = openStream.ReadLine();
行while循环之前的第一行。然后在第一次调用while ((listItemString = openStream.ReadLine()) != null)
时,在第一次循环迭代中重写此值。
只需在循环前删除2行代码:
listItemString = openStream.ReadLine();
listItem = listItemString.Split(' ');