我试图读取一个文件并提取2个数据块,我们称它们为block1和block2,从文件中包含多个数据块的文件中调用它们。两个块都需要在字节数组中返回 。 Block1将开始于文件开始的地方,该行开始 “block1:”,接着是要读取的字节数。块2(不一定出现在块1的 之后)将开始于文件开头的行“block2:”后面跟着要读取的 个字节的位置。我被限制在最高的.Net 3.5。从文件中提取字节数组
0
A
回答
0
您可以使用File.ReadAllBytes
和使用Array.Copy
重载之一,如果你知道他们是在指数从返回byte[]
提取您的块。
0
没有任何类型的文件头信息,你必须扫描整个文件,搜索您的block1:
或block2:
标记。
更新:
这里是你如何做到这一点的样本(不一定是最好的实现):
byte[] GetBlockOfData(string fileName, string blockName)
{
var allBytes = File.ReadAllBytes(fileName);
// Assuming block names are ASCII-encoded
var blockMarker = Encoding.ASCII.GetBytes(blockName + ":");
// Scan for the first byte of the marker
for (var i = 0; i < allBytes.Length; i++)
{
if (allBytes[i] == blockMarker[i])
{
// See if this is the entire marker
var isMatch == true;
for (var j = 0; j < blockMarker.Length; j++)
{
if (allBytes[i + j] != blockMarker[j])
{
isMatch = false;
break;
}
}
if (isMatch)
{
// Assuming it's a byte...
var blockLength = allBytes[i + blockMarker.Length];
var result = new byte[blockLength];
Array.Copy(
allBytes, i + blockMarker.Length + 1, result, 0,
blockLength);
return result;
}
}
}
return null;
}
+0
感谢您的回复。我同意。你有没有示例代码显示如何做到这一点? – 2011-01-26 18:18:55
0
正如其他人所说,没有头信息,您需要,至少可以通过某种类型的过滤器来查找文件内容,以查找您的“块”标记。
如果你有头信息(或至少一些信息的地方,以补偿您的块标记的),你可以使用内存映射文件:
http://www.developer.com/net/article.php/3828586/Using-Memory-Mapped-Files-in-NET-40.htm
这需要.NET 4.0,虽然如果您不使用.NET 4,也可以使用Win32 API。
相关问题
- 1. 如何从字节数组中提取文件扩展名
- 2. 从字节数组获取文件名
- 3. 提取从字节数组积分型
- 4. Linux命令从tar提取单个文件为字节/字节数组
- 5. 从字段数组中提取文本
- 6. 读取字节数组与将字节数组写入文件
- 7. 从文件中读取字节数组的数据
- 8. 使用PowerShell从字节数组中提取GPS数值
- 9. 从字节数组或流中获取文件名
- 10. 拆分之前从文件中读取的字节数组
- 11. 读取字节数组多个文件
- 12. 从字节数组创建文件
- 13. 将文件读取到字节数组时的冗余字节
- 14. 文件到字节数组
- 15. 从文本文件中读取数字字节
- 16. 在Swift中从文本文件中提取数字和字符
- 17. 从Scala文件中提取字节的范围
- 18. 如何从wav文件中提取单独的字节?
- 19. 如何使用unix从文件中提取特定字节
- 20. 写入/读取字节数组从/到文件java
- 21. 如何从文件读取字节到byte []数组?
- 22. 从C#中的资源文件获取文件字节数
- 23. 从python中将文件中的所有数字数据提取到数组中
- 24. 从字符串数组中提取Python
- 25. 从文件中读取字节Java
- 26. 如何从c中的字节数组读取字节范围
- 27. 从字节数组中获取最后一个字节
- 28. 从python文件名提取数字
- 29. AWK,提取细节值从文件
- 30. 从指针数组中获取特定字节数组的大小为字节
不幸的是,我不知道它们的索引。 – 2011-01-26 17:43:45
@Ray低音 - 你知道关于块的什么_do_?你没有真正提供你的问题中的任何信息。请编辑它并添加相关信息,以便人们可以给出有用的答案。 – Oded 2011-01-26 17:55:57