【发布时间】:2020-01-26 23:54:04
【问题描述】:
有没有办法在不占用太多内存的情况下读取文件?
我想删除文件上的一系列字节[]。然后将其保存到另一个路径。
using(FileStream sr = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using(BinaryReader br = new BinaryReader(sr))
{
abFile = new byte[(int)sr.Length];
br.Read(abFile, 0, (int)sr.Length);
br.Dispose();
}
sr.Dispose();
}
【问题讨论】:
-
看看内存映射文件 - docs.microsoft.com/en-us/dotnet/api/…
-
这真的归结为你在阅读中做什么?您需要字节数组中的整个文件吗?你对文件数据做了什么处理?
-
项目 > 属性 > 构建选项卡,取消勾选“首选 32 位”。你不喜欢这样的代码。
-
“任何方式”? ——当然,当然有“任何方式”。你试过什么?正如其他人所提到的,内存映射文件是一些人采用的一种方法。您也可以按顺序处理文件的各个部分,一次一点点。由于您没有解释有关文件的任何内容,也没有解释为什么要一次将全部内容存储在内存中,也没有解释您已经尝试过什么来解决您的问题,因此不可能知道哪个答案对您有好处。这个问题太宽泛了。
-
我还要指出:
using声明专门用于确保一次性物品的处置变得容易。根本没有理由在实际using语句块内的using语句的对象上调用Dispose()。
标签: c#