我正在呼叫File.ReadAllBytes(PATH);
,我正在加载的文件非常大(大约2GB),我得到SystemOutOfMemory
异常,我该如何解决这个问题??
注意:该程序用于加载大文件!
提前谢谢。
编辑: 我试图获取这些字节,然后以某种方式压缩它们,然后将它们转换为字符串,然后将字符串重新转换为字节数组,然后再转换为文件。
答案 0 :(得分:1)
使用BinaryReader
看on MSDN的方法:
const int CHUNK_SIZE = 1024;
using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
using (BinaryReader reader = new BinaryReader(stream, new ASCIIEncoding()))
{
byte[] chunk;
chunk = reader.ReadBytes(CHUNK_SIZE);
while (chunk.Length > 0)
{
DumpBytes(chunk, chunk.Length);
chunk = reader.ReadBytes(CHUNK_SIZE);
}
}
}
DumpBytes()
方法对你读过的字节做了一些有用的事情:
public static void DumpBytes(byte[] bytes, int length)
{
...
}
使用这种增量方法比一次加载文件更节省内存,并允许您在每次读取“数据块”时执行其他操作,例如更新用户界面等。 / p>