草庐IT

c# - System.IO.FileStream 在大文件上 super 慢

我有一段代码需要能够修改文件末尾的几个字节。问题是文件很大。高达100+Gb。我需要操作尽可能快,但经过几个小时的谷歌搜索后,.Net似乎在这里相当有限???我一直在尝试使用System.IO.FileStream并且不知道其他方法。“反向”文件流可以,但我知道如何创建一个(从末尾而不是从头开始写)。这是我所做的一些事情:(注意:时间是在关闭流时花费的)staticvoidMain(string[]args){//Simulatealargefileintsize=1000*1024*1024;stringfilename="blah.dat";FileStreamfs=newFile

C# I/O - System.IO.File 和 StreamWriter/StreamReader 之间的区别

假设我只对处理文本文件感兴趣,那么与StreamWriter相比,System.IO.File方法有哪些具体优势或劣势?是否涉及任何性能因素?基本区别是什么,在什么情况下应该使用哪些?还有一个问题,如果我想将一个文件的内容读入一个字符串并对其运行LINQ查询,哪个最好? 最佳答案 在File类中看似重复的方法背后有一段有趣的历史。它是在对.NET的预发布版本进行可用性研究之后产生的。他们请了一群有经验的程序员编写代码来操作文件。他们以前从未接触过.NET,只是有文档可以使用。成功率为0%。是的,有区别。当您尝试读取一个GB或更大的文

c# - 将 system.array 对象转换为 int[] 字符串或其他类型的对象

我正在学习C#并试图理解它的“面向类型”方面。所以前几天我需要从一个方法中接收一个System.Array对象。然后我尝试使用它的单个对象,所以我尝试用索引来解决它。编译器不让,说System.Array对象不支持索引。但是Array不是所有数组的基类吗(System.Arrayonmsdn)?为什么int[]支持索引而Array[]不支持?下面是一些代码来演示这个问题:int[]intArray={1,2,3,4,5,6,7,8,9,10};intt;ArraysysArray;Console.WriteLine("{0}",intArray.GetType().ToString()

c# - 使用 File.Exists 检查文件是否存在于 64 位系统上

我的操作系统是64位的,文件夹C:\Windows\SysWOW64中有一个文件111.txt,但在c:\windows\system32中没有该文件但是下面的代码返回truefile=@"C:\Windows\System32\111.txt";boolbExist=System.IO.File.Exists(file);不知道为什么?以及如何检查system32下是否有文件111.txt而不是SysWoW64? 最佳答案 由于许多应用程序已将System32目录名称硬编码到路径中,MS将64位系统文件放在那里而不是“System

c# - XDocument + IEnumerable 导致 System.Xml.Linq.dll 内存不足异常

基本上我有一个程序,当它开始时加载一个文件列表(如FileInfo),并为列表中的每个文件加载一个XML文档(如XDocument).程序然后从其中读取数据到容器类(存储为IEnumerables),此时XDocument超出范围。程序然后将数据从容器类导出到数据库。然而,在导出容器类超出范围后,垃圾收集器并未清理容器类,因为它存储为IEnumerable,似乎导致了XDocument留在内存中(不确定这是否是原因,但任务管理器显示XDocument中的内存未被释放)。由于程序循环遍历多个文件,最终程序抛出内存不足异常。为了缓解这种情况,我最终使用了System.GC.Collect(

c# - 使用 WPF 退出时出现 COM 异常

执行完以下两个测试用例后,COM执行将打印到控制台。我做错了什么?如果我单独运行其中一个测试,或者如果我同时运行两个测试,异常只会被写入控制台一次。这让我怀疑我没有清理某种按AppDomain的资源。我已尝试使用NUnit和MSTest进行测试,两种环境中的行为相同。(实际上,我不确定在MSTest中运行这两个测试是否会导致一个或两个异常打印输出。)异常(exception):System.Runtime.InteropServices.InvalidComObjectException:COMobjectthathasbeenseparatedfromitsunderlyingRCW

c# - 无法将类型 'bool' 隐式转换为 'system.threading.tasks.task bool'

我在服务实现代码中遇到此错误:“无法将类型‘bool’隐式转换为‘system.threading.tasks.taskbool’”。你能更正我的代码吗?publicTasklogin(stringusn,stringpwd){DataClasses1DataContextauth=newDataClasses1DataContext();varmessage=frompinauth.Userswherep.usrName==usn&&p.usrPass==pwdselectp;if(message.Count()>0){returntrue;}else{returnfalse;}}

c# - 在优化使用时让 ReSharper 保留 'using System;'

我想知道是否有一些选项可以防止ReSharper仅删除usingSystem;指令?也许这可以在某处配置?另外,有没有办法让ReSharper像VisualStudio2008那样对剩余的指令进行排序(我认为是按字母顺序)?谢谢。 最佳答案 是的,有这么一个选项:ReSharper->Languages->C#->NamespaceImports。您可以添加不应删除的namespace,以及应始终导入的namespace。 关于c#-在优化使用时让ReSharper保留'usingSys

c# - System.Drawing.Graphics.DrawString - "Parameter is not valid"异常

有时,Microsoft的异常消息毫无帮助,令人恼火。我创建了一个漂亮的小MVC方法来呈现文本。方法体如下。当它到达“DrawString”方法时,我得到一个异常抛出说“参数无效”。请注意,据我所知,字体构造正确(我只是使用10pt的Arial),矩形大小为正且看起来有效,画笔为白色SolidBrush,格式标志不影响输出;也就是说,如果我从调用中排除格式标志,我仍然会收到错误消息。DrawString调用就在底部附近。publicActionResultRenderText(stringfontFamily,floatpointSize,stringforeColor,stringb

c# - System.Reflection.Assembly 的空引用异常

我开发了一个用于内部电子邮件报告的库。当我从另一个项目使用该库时(通过添加引用)。它在下一行给出了NullReferenceException。System.Reflection.Assembly.GetEntryAssembly().GetName().Name知道为什么Assembly为空吗? 最佳答案 这是预期的,尤其是在由非托管运行时加载的Windows服务中。使用:Process.GetCurrentProcess().MainModule.FileName获取非托管入口点文件。更新看来您正在寻找这个:System.Ref