C#把文件读取出来每出现一次0x31,0x32,0x33就存到一个新的文件当中(分帧工具)
时间: 2024-10-25 14:03:50 浏览: 15
C#读取DBF文件(以文件形式读取dbf数据)
在C#中,如果你想从一个二进制文件中按特定的字节序列(例如0x31, 0x32, 0x33,也就是十六进制的1,2,3)分割并创建新的文件,可以采用类似的方式来实现。下面是一个基本的示例代码,它假设文件是一个连续的数据流:
```csharp
using System;
using System.IO;
class FrameExtractor
{
static void Main(string[] args)
{
string inputFilePath = "input.bin";
string outputBasePath = "frames_"; // 输出文件前缀
byte expectedSequence = (byte)0x33; // 指定的结束序列
try
{
byte[] frameData = new byte[3]; // 每次期望读取三个字节
List<byte[]> frames = new List<byte[]>();
using (FileStream inputStream = File.OpenRead(inputFilePath))
{
while (true)
{
if (!inputStream.ReadByte().Equals(expectedSequence)) continue; // 遇到非目标序列则继续读取
// 保存当前帧
frameData[0] = inputStream.ReadByte();
frameData[1] = inputStream.ReadByte();
frameData[2] = inputStream.ReadByte();
// 创建新文件并写入帧数据
string frameFileName = $"{outputBasePath}{DateTime.Now.Ticks}.bin";
using (FileStream frameOutput = File.Create(frameFileName))
{
frameOutput.Write(frameData, 0, frameData.Length);
}
frames.Add(frameData); // 将帧添加到列表中
}
}
Console.WriteLine($"已提取{frames.Count}个帧并分别存储在单独文件中.");
}
catch (Exception ex)
{
Console.WriteLine($"发生错误: {ex.Message}");
}
}
}
```
这段代码读取输入文件,当遇到0x33时认为是帧结束,然后保存这三字节的数据到一个新的文件中。注意,实际应用中需要考虑可能出现的边界情况,如文件大小、读取错误等。
阅读全文