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

Whats the most efficient way in C# to cut off the first 4 bytes of a file?

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

我这样加载我的文件:

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

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

如果您只是使用字节数组,您可以在数组中使用 ConstrainedCopy 方法 class。

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

如果您不打算只处理原始字节,请使用内存流和二进制文件 reader 或其他人建议的文件流。

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 class documentation.

中列出了重要功能