我正在尝试在使用BinaryWriter
编写的文本文件中进行搜索,并且必须输入id
我想在TextBox
中搜索,然后搜索它但问题是我必须输入相同的ID顺序才能搜索
例如假设我有3条ID为1,2,3的记录
如果我输入1,它将在文本框中显示它的数据
然后,如果我输入3,它将在文本框中显示它的数据
但当我输入2时,它将显示异常(Unable to read beyond the end of the stream
)
这是我在文本文件中搜索的代码,并以表格形式显示文本框中的其余数据(记录大小= 35 )
BinaryReader br = new BinaryReader(File.Open("D:\\File.txt",
FileMode.Open, FileAccess.Read));
int num_records = (int)br.BaseStream.Length / Class1.rec_size;
int x = int.Parse(textBox2.Text);
for (int i = 0; i < num_records; i++)
{
br.BaseStream.Seek(Class1.count, SeekOrigin.Begin);
if (int.Parse(br.ReadString()) == x)
{
// textBox2.Text = int.Parse(br.ReadString()).ToString();
textBox3.Text = br.ReadString();
textBox4.Text = br.ReadString();
textBox5.Text = int.Parse(br.ReadString()).ToString();
textBox6.Text = br.ReadString();
break;
}
Class1.count += Class1.rec_size;
}
br.Close();
}
答案 0 :(得分:1)
您似乎忘了重置Class1.Count。
在您的代码行中:
br.BaseStream.Seek(Class1.count, SeekOrigin.Begin);
您有一个Class1.Count的偏移量。由于在每条记录的末尾添加了偏移Class1.count += Class1.rec_size;
,因此您只会向上搜索流,这就是它在有序搜索中成功的原因。
您需要为每次搜索重置此计数器,以便再次从流的开头开始。