C#加载二进制文件
1:对于非常小的文件File.ReadAllBytes会很好。
2:对于非常大的文件和使用.net 4.0,您可以使用MemoryMapped文件。
3:如果不使用.NET 4.0比,读取数据块将是不错的选择
1)我会使用资源文件,而不是将其存储为大量单独的文件。
2)您可能希望流式传输数据,而不是一次全部读取,在这种情况下,您可以使用FileStream。
3):使用ReadAllBytes:
byte[] bytes = File.ReadAllBytes(path);
1:对于小,File.ReadAllBytes
2:对于大,流(的FileStream)或在流A BinaryReader在 - 其目的是除去需要分配一个巨大的缓冲区,通过改变代码连续读取小块。
3:回去找到预期的大小;默认为最差情况(#2)
另外请注意,我会尽量减少siE首先,也许通过选择数据格式或压缩。
此示例适用于两种 - 对于需要缓冲读取的大文件。
public static byte[] ReadFile(string filePath)
{
byte[] buffer;
FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
try
{
int length = (int)fileStream.Length; // get file length
buffer = new byte[1024]; // create buffer
int count; // actual number of bytes read
int sum = 0; // total number of bytes read
// read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; // sum is a buffer offset for next reading
}
finally
{
fileStream.Close();
}
return buffer;
}
这比File.ReadAllBytes更好(对两者都有好处);为什么发明工作? – 2010-11-22 14:35:33
(这里主要的问题是需要为大文件分配一个巨大的缓冲区) – 2010-11-22 14:42:17
您可能会发现下面的文章感兴趣:http://www.codeproject.com/KB/files/ fastbinaryfileinput.aspx – 2010-11-22 14:29:01