public static byte[] ReadAndProcessBytesOptimized(string filePath)
{
using (MemoryStream stream = new MemoryStream())
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
byte[] buffer = ArrayPool<byte>.Shared.Rent(4096);
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
Span<byte> span = new Span<byte>(buffer, 0, bytesRead);
for (int i = 0; i < span.Length; i++)
{
if (span[i] == 0x0A)
{
stream.WriteByte(span[i + 1]);
}
}
}
ArrayPool<byte>.Shared.Return(buffer);
}
return stream.ToArray();
}
}
在优化后的代码中,我们使用MemoryStream和FileStream结合ArrayPool<byte>来分块读取文件,减少内存占用。通过Span对每一块读取的数据进行高效处理,避免了不必要的内存分配。最后,将处理结果写入MemoryStream并返回。
C# 文件处理 内存优化 字节操作 ArrayPool
这篇文章介绍了一个优化后的C#文件读取处理方法,使用MemoryStream和ArrayPool高效分块读取文件数据,通过Span进行快速处理,减少内存占用,提升性能。