所以我使用二进制文件在原始字符串上写一些字符串,但我需要覆盖二进制文件中的整个字符串,所以我试图写新字符串,并用0x00覆盖旧字符串的其余部分(空字节),这是我尝试过的,但不起作用:
bw.Write(enc.GetBytes(listView1.Items[i].SubItems[2].Text + (31 - enc.GetByteCount(listView1.Items[i].SubItems[2].Text)) * '\0'));
Run Code Online (Sandbox Code Playgroud)
31是所有旧字符串都不能通过的常量int(不要问我,这是一个脚本的东西)
我想通过为他们提供一个BinaryWriter来使写作更舒适,并且可以自动将其数据添加到某个内部队列中.
为此,我想编写BinaryWriter的子类并覆盖其Dispose方法.但是,Dispose不是虚拟的.挂钩是否足够Dispose(bool)?还是有更好的方法?
我正在为客户端开发本地解决方案,而无需在计算机上进行任何控制和互联网连接。
该解决方案将根据已购买许可证的允许请求(REST API调用)数量获利。因此,当前我们将请求计数存储在文件系统本身的加密文件中。但是此解决方案并不完美,因为可以将文件复制到某个位置,然后在请求配额结束后将其替换。同样,如果文件被删除,则需要支持人员的手动干预。
我正在寻找一种以二进制形式存储状态/数据并更新运行时的解决方案(考虑使用二进制本身更新的使用计数)
寻找更好的方法。
同样二进制应该从先前的存储状态开始
有办法吗?
PS:我知道写二进制文件不会解决问题,但是我认为,通过增加状态存储位置的排列和组合的数量,这将增加难度,并且由于不常见的知识是可以更改可执行文件,如果有人试图弄乱系统,它将是查找状态的最后一个位置(安全性由默默无闻)
我有一个表单应用程序执行模拟并不断读取/写入二进制文件.如果让它通过,一切正常.但是,如果表单已关闭/模拟已中止,则文件流未正确关闭 - 文件将被锁定.有没有办法确保所有流关闭?我尝试了以下 - 但它没有效果......非常感谢,T
public BinaryWriter BinWrite;
public BinaryReader BinRead;
public BinaryWriter EnvBinWrite;
public BinaryReader EnvBinRead;
public void theForm_FormClosing(object sender, FormClosingEventArgs e)
{
//Close all binary file reader/writers -- crashes if it cannot overwrite files
foreach (Building B in AllBldgs)
{
try
{
EnvBinRead.Close();
}
catch
{ continue; }
try
{
EnvBinWrite.Close();
}
catch
{ continue; }
try
{
BinRead.Close();
}
catch
{ continue; }
try
{
BinWrite.Close();
}
catch
{ continue; }
}
}
Run Code Online (Sandbox Code Playgroud) binarywriter ×4
c# ×3
.net ×1
binaryfiles ×1
binaryreader ×1
dispose ×1
filestream ×1
go ×1
overriding ×1
winforms ×1