2 c# random binary struct file
大家好,
我有以下结构:
public struct IncomeTax
{
public string name, category;
public int income;
}
Run Code Online (Sandbox Code Playgroud)
我正在写一个不.使用以下代码将二进制格式的结构(记录)转换为文本文件:
FileStream fs = new FileStream(Application.StartupPath + "\\Hello.txt", FileMode.Append, FileAccess.Write);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(it.name);
bw.Write(it.category);
bw.Write(it.income);
bw.close();
fs.close();
Run Code Online (Sandbox Code Playgroud)
现在,我想从这个文件中随机读取记录,说我想直接进入第3条记录.我知道这可以用BinaryReader&完成FileStream.Seek.但我不知道如何使用FileStream.Seek直接转到任何记录.请帮忙.
你不能,凭借你所拥有的结构 - 记录可以是任何大小.为了寻求到任意的记录,你要么需要有记录的固定大小(这将意味着有对你的大小限制的一些name和category字符串,然后用空的空间填充的记录,如果他们比限值),或者你需要建立一个单独的索引,这基本上是固定大小的记录说:"记录X开始在位置Y".
请注意,后一种方法使编辑记录变得棘手,因为除非新版本与旧版本完全相同,否则您需要将其保留在原位但在记录末尾"浪费"一些空间,或者创建一个文件末尾的新记录.
或者您可以使用数据库,这几乎肯定是一个更好的主意.有各种形式的"嵌入式"数据库,这意味着您不需要客户端 - 服务器配置,只需要一个或两个文件数据库内容.