【发布时间】:2015-10-31 18:08:39
【问题描述】:
我觉得很难表达自己,所以我会直接进入代码
FileStream stream = new FileStream("//ignoreThis//demo.bin",
FileMode.Append, FileAccess.Write, FileShare.Write));
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(myNum);
writer.Write(myString);
我可以多次调用这个方法,我知道每次我这样做时,它都会在文件'demo.bin'的末尾添加新数据。现在我正在尝试编写一个方法,我可以在其中寻找我的第三个 instance(我不确定我是否可以这样称呼它)。主要问题是变量的大小不同,即使我使用此代码使字符串的“固定”长度为 20 (我知道当有人写一个超过 20 的字符串时它不起作用,但我已经写了验证以确保他们不超过这个限制)
这是我用来使字符串保持恒定长度的代码
public String MakeFixedSize(int length, String inputString)
{
return inputString.PadRight(length, '\0');
}
据我所知,我在这个程序中使用的 int 的大小和长度都是固定的(不在上面的代码中)
【问题讨论】:
-
“直接写入文件夹”是什么意思?每条记录一个文件?
-
我的意思是文件。我想以可区分的方式分隔每条记录,以便在不使用序列化的情况下加快搜索速度(即使用字节数组并通过 BinaryWriter 存储并通过解析回读取它)。我已经有了解析代码和诸如此类的代码,但我需要一种分离记录的好方法
-
但是对于可变大小的记录,直接搜索将不起作用。我的例子中的回读是快速而直接的,尽管是在一个记录库的记录上。但是,它不是(显式)解析字节,只是类成员类型。
-
所以如果我理解正确的话,我需要为字符串或序列化添加前缀(这在这个任务中是不允许的)。我的问题是为什么我最初编写的用于使字符串具有固定大小的代码不能与二进制编写器一起使用,但在使用序列化时却可以正常工作?
标签: seek binarywriter fixed-size-types