回答
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
- 1. C++从http下载二进制文件
- 2. Java加载二进制文件
- 3. 二进制文件下载
- 4. 如何在C++中追加二进制文件与二进制文件
- 5. C++二进制文件
- 6. 追加二进制文件
- 7. C二进制文件与ascii文件
- 8. 让gdb自动从核心文件加载二进制文件
- 9. 仅将二进制文件加载到iPhone上进行测试
- 10. 将加载命令添加到mach-o二进制文件
- 11. 在Node.js上上载二进制文件
- 12. Android下载二进制文件问题
- 13. AFNetworking和下载二进制文件
- 14. 只下载telerik二进制文件
- 15. 使用Javascript下载二进制文件
- 16. 使用Wininet下载二进制文件
- 17. 写入二进制文件在C++
- 18. C#分配,二进制文件类型
- 19. 二进制文件读取性能C++
- 20. 二进制文件读取/用C
- 21. C:编辑二进制文件
- 22. 读取二进制文件C++
- 23. C:读取二进制文件
- 24. 在C中打开二进制文件
- 25. C二进制文件读取
- 26. C++中的二进制文件I/O
- 27. 读取二进制文件:c
- 28. C,从bin文件FREAD二进制
- 29. 将0写入二进制文件C++
- 30. 二进制C++中的文件读取
您可能会发现下面的文章感兴趣:http://www.codeproject.com/KB/files/ fastbinaryfileinput.aspx – 2010-11-22 14:29:01