C# 读写自定义二进制文件格式

jinwe888 2013-07-09 10:17:28
class myUSER
{
public byte ID { get; set; }
public string user_name { get; set; }
public string name_pass { get; set; }
public bool guest { get; set; }
}

myUSER myuser = new myUSER();
myuser.ID = 101;
myuser.user_name = "XXXXXX";
myuser.name_pass = "123456";
myuser.guest = false;

byte[] data = new byte[42];

data[0] = myuser.ID;
Array.Copy(System.Text.Encoding.Unicode.GetBytes(myuser.user_name), 0, data, 1, myuser.user_name.Length*2);
Array.Copy(System.Text.Encoding.Unicode.GetBytes(myuser.name_pass), 0, data, 21,myuser.name_pass.Length*2);
data[41] = Convert.ToByte(myuser.guest);

try
{
FileStream fs=File.Open(Application.StartupPath + "\\wljs.bin",FileMode.Create,FileAccess.ReadWrite);
fs.Write(data, 0,42);

fs.Flush();
fs.Close();
}
catch
{
}

能写入到文件中,但如果要进行插入和删除应该怎么办?谢谢!删除我想可做个删除标志后不去读它,但插入呢?难道每次都要建个临时文件来导一次?初学编程,请指教!谢谢了!
...全文
441 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinwe888 2013-07-11
  • 打赏
  • 举报
回复
谢谢各位了!
tcmakebest 2013-07-10
  • 打赏
  • 举报
回复
插入可以换成追加,不然就得用临时文件导,文件小的话,内存中导就好了,这个不复杂。
Regan-lin 2013-07-10
  • 打赏
  • 举报
回复
你插入就再写这个文件就行了,你可以获取你要插入的位置的postion,再写入内容就行了
兔子-顾问 2013-07-09
  • 打赏
  • 举报
回复
如果是出于保密的目的 可以将字符串转换为字节流,再与某个值异或,或是经过转换后存储,读取的时候也反过来处理,然后再转换为字符串,也可以实现二进制保存,加密的功能。
兔子-顾问 2013-07-09
  • 打赏
  • 举报
回复
带有不定长字符串,建议用明文保存,否则数据结构会比较复杂。
djming1 2013-07-09
  • 打赏
  • 举报
回复
设置读写位置,比如:fs.Position=5,然后写入

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧