BIN文件、二进制文件、嵌入式、我们常用的Firmware通常以BIN文件或HEX文件格式存储,因此对BIN文件的读写操作仍然很常见。在这里,我将记录我经常使用的BIN文件操作。
首先,C# Winform具有Binary文件(BIN文件)的默认操作类。如下所示
filestream file _ path=new filestream(文件名、FileMode、file access);
//binary reader bin _ read=new binary reader(file _ path);
binary writerbin _ write=new binary writer(file _ path);如果要读取BIN文件(如上所示),请定义自己的BinaryReader如果要写入BIN文件,请定义BInaryWriter。读写的基本操作包括:
读取BIN文件的操作为bin_read .ReadByte():返回读取的Byte值。bin _ read . read bytes(count);返回值是count数的Byte数组。有多种返回格式、int、char等。这里不一一详细说明。
写入BIN文件的操作为:bin_wri(value)。其中,value是要写入的值,value可以采用byte、int或char等格式。Bin _ wri (byte [] buffer,int index,int count);此方法的含义是将buffer数组的某些值(buffer数组的起始索引为index,长度为count)分配给BIN文件的当前位置。
例如,我要写BIN文件,0到255,256个byte。
Using System
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Namespace测试
{
public partial classform 1 3360 form
{
Public Form1()
{
initialize component();
}
Private void button1 _ click(对象服务器、事件e)
{
save file dialog save _ file=new save file dialog();
='BIN文件|*。bin ';
If ()==DialogRe)
{
filestream file _ path=new filestream、filemode.openorcreate、fileacce);
binary writerbin _ write=new binary writer(file _ path);//BIN创建文件流
byte[]init _ byte=new byte[256];
for(int temp=0;Temp 256Temp)
{
init _ byte[temp]=(byte)temp;
}
Bin_wri(init_byte,0和256);将内容写入//BIN文件
bin _ wri();
bin _ wri();
();
}
}
}
}文件运行结果如下:
那么写操作完成了。替换工作该怎么办?实际上,如果要将HEX文件转换为BIN文件,替换功能很有用。例如,要更改其中的一些数字,请参阅代码。
Using System
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Using Sy
Namespace测试
{
public partial classform 1 3360 form
{
Public Form1()
{
initialize component();
} private void button1_Click(object sender, EventArgs e) { SaveFileDialog save_file = new SaveFileDialog(); = "BIN文件|*.bin"; if () == DialogRe)//打开文件对话框 { FileStream file_path = new FileStream, FileMode.OpenOrCreate,FileAcce); BinaryWriter bin_write = new BinaryWriter(file_path);//创建BIN文件流 byte[] init_byte = new byte[256]; for (int temp = 0; temp < 256; temp++) { init_byte[temp] = (byte)temp; } bin_wri(init_byte, 0, 256);//初始化BIN文件 Con); //看一下目前文件大小 bin_wri(255, SeekOrigin.Begin);//修改BIN文件当前位置至第255个字节 bin_wri(0x08); //第255个字节改为08 bin_wri(8, SeekOrigin.Begin);//修改BIN文件当前位置至第8个字节 bin_wri((byte)0x01);//第8个字节改为01 bin_wri((byte)0x02);//第9个字节改为02 bin_wri((byte)(0x90));//第10个字节改为90 byte[] buffer = new byte[8]; for (int temp = 0; temp < 8; temp++) { buffer[temp] = (byte)(temp + 1); } bin_wri(128, SeekOrigin.Begin);//修改BIN文件当前位置至第128个字节 bin_wri(buffer, 2, 5);//将Buffer字节数组中的第2到到第7个数赋值到BIN文件的第128到133个字节 bin_wri((byte)(0x90));//第134个字节改为08 Con);//看一下目前的文件大小 (256);//文件大小已经超过256,只保留256个字节 Con);//看一下目前的文件大小 bin_wri();//释放文件资源 bin_wri(); (); } } } }上述代码的运行结果为:
可以看到,BIN文件相应的位置已经更改完成,并且其他位置也没有出现变动。
这里我需要提一下,在做替换过程中,BIN文件的大小是会发生变化的,因此我用Con)来监控文件的大小变化。控制台输出的结果为:
256,259,256
因此,我在代码的最后将文件的长度强行设置为256.这个不用担心数据,实际测试下来,如果没有(256)语句,那么结果如下:
可以看到后面几个数据是无效的数据,这个可以直接去掉。
以上是我平时比较常用的BIN文件操作。当然,BIN文件的某一位的删除和插入,我还没有比较容易的办法,不过BIN文件的删除或者插入特定字符用的场景非常少,因此没有过多的研究。希望以上内容对大家有所帮助。
1.《【长虹bin数据怎么写入】学习C#短文-操作BIN文件(读、写、替换)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【长虹bin数据怎么写入】学习C#短文-操作BIN文件(读、写、替换)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/why/3089445.html