我有一个很好的任务,就是如何处理大型文件被加载到我们应用程序的脚本编辑器中(就像我们用于快速宏的内部产品的VBA一样).大多数文件大约300-400 KB,这是很好的加载.但是当它们超过100 MB时,这个过程很难(正如你所期望的那样).
发生的事情是将文件读取并推入RichTextBox然后导航 - 不要过于担心这部分.
编写初始代码的开发人员只是使用StreamReader并且正在执行
[Reader].ReadToEnd()
Run Code Online (Sandbox Code Playgroud)
这可能需要很长时间才能完成.
我的任务是打破这段代码,将其以块的形式读入缓冲区并显示一个带有取消选项的进度条.
一些假设:
现在提问:
这些(在您的专业意见中)是好主意吗?我过去曾经有一些问题从Streams读取内容,因为它总会错过最后几个字节或者其他东西,但如果是这样的话,我会问另一个问题.
如何使用SHA1CryptoServiceProvider()文件创建文件的SHA1校验和?
我浏览了数百万条记录,有时我必须使用调试Console.WriteLine来查看发生了什么.
但是,Console.WriteLine速度非常慢,比写入文件慢得多.
但它非常方便 - 有没有人知道加速它的方法?
我需要从磁盘读取1gb原始文本文件到ram以在C#中进行一些字符串操作.
string contents = File.ReadAllText(path)
Run Code Online (Sandbox Code Playgroud)
抛出内存异常(不出所料)
最好的方法是什么?
使用MVC模型,我想编写一个JsonResult,它将Json字符串流式传输到客户端,而不是立即将所有数据转换为Json字符串,然后将其流回客户端.我有动作需要发送非常大(超过300,000条记录)作为Json传输,我认为基本的JsonResult实现不可扩展.
我正在使用Json.net,我想知道是否有一种方法来流式传输Json字符串的块.
//Current implementation:
response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(Data, formatting));
response.End();
//I know I can use the JsonSerializer instead
Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer();
serializer.Serialize(textWriter, Data);
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何将块写入textWriter并写入响应并调用reponse.Flush()直到所有300,000条记录都转换为Json.
这有可能吗?
c# ×5
.net ×2
asp.net-mvc ×1
checksum ×1
file-io ×1
json ×1
json.net ×1
large-files ×1
performance ×1
sha1 ×1
stream ×1
streamreader ×1
string ×1