Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 使用过多内存读取文件流_C#_.net_Filestream - Fatal编程技术网

C# 使用过多内存读取文件流

C# 使用过多内存读取文件流,c#,.net,filestream,C#,.net,Filestream,我想将一个文件作为base64string读取到流中,我正在使用下面的代码读取该文件,但当我看到内存使用量超过900MB时,我通过任务管理器对其进行监控。如果我遗漏了什么,当我将其读入字符串时,我可以看到内存使用量激增(我使用了一个150MB的文件来测试) 这里的问题是,您正在将整个文件读取到内存中,并多次复制数据 字节[]数组 StringBuilder具有char[]后备数组 如果此文件的大小很大,则肯定会导致内存中出现峰值 尝试使用ToBase64Transform类,而不是一次读取所

我想将一个文件作为
base64string
读取到流中,我正在使用下面的代码读取该文件,但当我看到内存使用量超过900MB时,我通过任务管理器对其进行监控。如果我遗漏了什么,当我将其读入字符串时,我可以看到内存使用量激增(我使用了一个150MB的文件来测试)


这里的问题是,您正在将整个文件读取到内存中,并多次复制数据

  • 字节[]
    数组
  • StringBuilder
    具有
    char[]
    后备数组
如果此文件的大小很大,则肯定会导致内存中出现峰值


尝试使用
ToBase64Transform
类,而不是一次读取所有内容。这是为了使用
作为输入,避免一次将整个文件加载到内存中。相反,它会将其分块处理

这里的问题是,您正在将整个文件读取到内存中,并多次复制数据

  • 字节[]
    数组
  • StringBuilder
    具有
    char[]
    后备数组
如果此文件的大小很大,则肯定会导致内存中出现峰值


尝试使用
ToBase64Transform
类,而不是一次读取所有内容。这是为了使用
作为输入,避免一次将整个文件加载到内存中。相反,它会将其分块处理

嘿,JaredPar,我使用了链接中的代码,没有写入输出文件,而是显示为一个字符串,但代码要永远执行下去。我希望立即在内存中存储完整的Base64编码字符串数据,上述解决方案似乎对我不起作用,是否有其他替代方案嘿,JaredPar,我使用了链接中的代码,没有写入输出文件,而是显示为一个字符串,但代码需要永远执行。如果我想立即在内存中保存完整的Base64编码字符串数据,上述解决方案似乎对我不起作用,是否有其他替代方案
stringBuilder Sb=  new stringBuilder ();
using (var fs = new FileStream(@"C:\Users\Sanath Kumar\Desktop\s.pdf", FileMode.Open, FileAccess.Read))
{
    var buffer = new byte[fs.Length];
    fs.Read(buffer, 0, (int)fs.Length);
    Sb.Append(Convert.ToBase64String(buffer));
    buffer = null;
    fs.Flush();
    fs.Dispose();
}