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();
}