在c#中截断文件的前4个字节最有效的方法是什么?

本文关键字:字节 有效 方法 是什么 4个 文件 | 更新日期: 2023-09-27 18:11:10

我有一个压缩(LZMA) .txt文件,需要解压缩,但我必须排除前4个字节,因为它们不是文件内容的一部分。

我像这样加载我的文件:

byte[] curFile = File.ReadAllBytes(files[i]);

性能是至关重要的,因为我必须遍历超过14k+的文件,平均文件大小约为4KB。

在c#中截断文件的前4个字节最有效的方法是什么?

for (int i = 0; i < filePath.Length; i++)
{
    var positionToSkipTo = 4;
    using (var fileStream = File.OpenRead(filePath))
    {
        fileStream.Seek(positionToSkipTo, SeekOrigin.Begin);
        var curFile = new byte[fileStream.Length - positionToSkipTo];
        fileStream.Read(curFile, 0, curFile.Length);
        //Do your thing
    }
}

一切都不言自明。重要的函数在MSDN FileStream类文档中列出。

如果你只是使用字节数组,你可以在array类中使用ConstrainedCopy方法。

Array.ConstrainedCopy(unclippedArray, 4, clippedArray, 0, unclippedArray.Length - 4);

如果你不打算只处理原始字节,利用内存流和二进制读取器或文件流,就像其他人建议的。