在c#中的文本文件中搜索?
我试图在用在c#中的文本文件中搜索?,c#,binaryfiles,C#,Binaryfiles,我试图在用BinaryWriter编写的文本文件中搜索,必须输入id 我想在TextBox中搜索,然后再搜索它,但问题是我必须输入相同的id顺序才能搜索 例如假设我有3条id为1,2,3的记录 如果我输入1,它将在文本框中显示其数据 然后,如果我输入3,它将在文本框中显示它的数据 但当我输入2时,它将显示异常(无法读取流末尾以外的内容) 这是我在文本文件中搜索并在表单(记录大小=35)的文本框中显示其余数据的代码 BinaryReader br=新的BinaryReader(File.Open(
BinaryWriter
编写的文本文件中搜索,必须输入id
我想在TextBox
中搜索,然后再搜索它,但问题是我必须输入相同的id顺序才能搜索
例如假设我有3条id为1,2,3的记录
如果我输入1,它将在文本框中显示其数据
然后,如果我输入3,它将在文本框中显示它的数据
但当我输入2时,它将显示异常(无法读取流末尾以外的内容
)
这是我在文本文件中搜索并在表单(记录大小=35)的文本框中显示其余数据的代码
BinaryReader br=新的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);
对于(int i=0;i
您似乎忘记重置Class1.Count
在代码行中:
br.BaseStream.Seek(Class1.count,SeekOrigin.Begin)代码>
你的偏移量是Class1.Count。因为在每条记录的末尾添加到偏移量Class1.count+=Class1.rec\u size
您将只在向上方向搜索流,这就是它在有序搜索中成功的原因
每次搜索都需要重置此计数器,以便再次从流的开始处开始。文件有多大?这是文本文件:00001 1111 1111 11111 00002 1111 1111 1111 1111 11111 00003 1111 1111 1111 11111总记录大小为107每条记录大小为35。我想您可能需要向我们展示这些文件的具体方式和位置正在调用记录以进行读取,这是一个更好的示例。显然,它与您读取流的方式有关,例如,br.ReadString()代码>连续。
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();
}