Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用“时出现SystemOutOfMemory异常”;ReadAllBytes()文件&引用;_C# - Fatal编程技术网

C# 调用“时出现SystemOutOfMemory异常”;ReadAllBytes()文件&引用;

C# 调用“时出现SystemOutOfMemory异常”;ReadAllBytes()文件&引用;,c#,C#,我正在调用File.ReadAllBytes(PATH),我正在加载的文件非常大(大约2GB),我遇到了一个SystemOutOfMemory异常,我如何解决这个问题?? 注意:该程序用于加载大文件! 提前谢谢 编辑: 我试图获取这些字节,然后以某种方式压缩它们,然后将它们转换为字符串,然后将字符串重新转换为字节数组,然后再转换为文件。使用二进制读取器的方法,如图所示: 其中,DumpBytes()方法对您读取的字节执行一些有用的操作: public static void DumpBytes(

我正在调用
File.ReadAllBytes(PATH)
,我正在加载的文件非常大(大约2GB),我遇到了一个
SystemOutOfMemory
异常,我如何解决这个问题?? 注意:该程序用于加载大文件! 提前谢谢

编辑:
我试图获取这些字节,然后以某种方式压缩它们,然后将它们转换为字符串,然后将字符串重新转换为字节数组,然后再转换为文件。

使用
二进制读取器的方法,如图所示:

其中,
DumpBytes()
方法对您读取的字节执行一些有用的操作:

public static void DumpBytes(byte[] bytes, int length)
{
    ...
}

使用这种增量方法将比一次性加载文件更节省内存,并且允许您在每次读取“一块”数据时执行其他操作,例如更新用户界面等。

一点一点地读取…您真的需要将整个文件加载到内存中吗?你能改成流媒体吗?你在干什么?你好,欢迎。请显示您正在使用的代码。对于您描述的非常大的文件,我建议您不要使用
ReadAllBytes()
方法,而是使用
StreamReader
。不要这样做。读入一点文件,压缩它,写出一点文件,重复直到完成。不要使用字符串作为二进制存储。我认为增量方法是最好的。请参阅MSDN上的
BinaryReader.ReadBytes
。您可以一次读取一个块到缓冲区,在运行时更新进度,等等。
public static void DumpBytes(byte[] bytes, int length)
{
    ...
}