问题标签 [streamreader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
53808 浏览

.net - 如何使用 .net StreamReader 打开已打开的文件?

我有一些 .csv 文件用作测试台的一部分。我可以毫无问题地打开它们并阅读它们,除非我已经在 Excel 中打开了文件,在这种情况下我会得到IOException

System.IO.IOException:该进程无法访问文件“TestData.csv”,因为它正被另一个进程使用。

这是来自测试台的片段:

这是 StreamReader 的限制吗?我可以在其他应用程序(例如 Notepad++)中打开该文件,因此它不会是操作系统问题。也许我需要使用其他课程?如果有人知道我如何解决这个问题(除了关闭 excel!),我将不胜感激。

0 投票
9 回答
23747 浏览

c# - HTTPWebResponse + StreamReader 非常慢

我正在尝试使用 HttpWebResponse.GetResponse() 和 Streamreader.ReadToEnd() 在 C# 中实现一个有限的网络爬虫(仅适用于几百个站点),还尝试使用 StreamReader.Read() 和一个循环来构建我的 HTML 字符串。

我只下载大约 5-10K 的页面。

这一切都非常缓慢!例如,平均 GetResponse() 时间约为半秒,而平均 StreamREader.ReadToEnd() 时间约为 5 秒!

所有站点都应该非常快,因为它们离我的位置非常近,并且拥有快速的服务器。(在 Explorer 中几乎不需要 D/L)而且我没有使用任何代理。

My Crawler 有大约 20 个线程同时从同一站点读取。这会导致问题吗?

如何大幅减少 StreamReader.ReadToEnd 时间?

0 投票
7 回答
75825 浏览

c# - 处理流阅读器会关闭流吗?

我正在向要写入的方法发送一个流,并且在这些方法中我使用的是二进制读取器/写入器。当读取器/写入器被处理时,无论using是被引用还是仅仅在它未被引用时,流是否也关闭了?

我会发送一个 BinaryReader/Writer,但我也在使用 StreamReader(也许我应该绕过它。我只将它用于 GetLine 和 ReadLine)。如果每次关闭写入器/读取器时都关闭流,这将非常麻烦。

0 投票
4 回答
7550 浏览

xml - 读取 xml 流

我正在尝试阅读以下 xml 流,但我真的很挣扎。

通过以下方式获取流

如果元素位于开始标签和结束标签之间,例如

然后我可以访问该值。我一直在使用 Select Case xmlnodetype 但是当节点类型是空格时使用它我无法到达空格之外的元素。所以在下面一行

除了财产这个词,我什么也做不了。

很明显,这对我来说是全新的,所以我欢迎所有和任何帮助。

0 投票
4 回答
6751 浏览

c# - 如何读取仅由 LF 分隔的文件中的每一行?

我必须逐行读取日志文件。它的大小约为 6MB,总共 40000 行。但是在测试我的程序后,我发现该日志文件仅由 LF 字符分隔。所以我不能使用类的Readline方法StreamReader

我该如何解决这个问题?

编辑:我尝试使用文本阅读器,但我的程序仍然无法正常工作:

0 投票
5 回答
3981 浏览

c# - CSV 文件读取。特殊字符问题

我必须编辑一个 csv 文件,问题是我的特殊字符,如 ó ã ç 被搞砸了。

这是我的代码的一部分:

更新:

我能够通过在 Stramreader 对象上使用 Encoding.Default 来读取字符。(我可以在控制台上显示它们)

我已经尝试在编写器上使用 ISO 8859-1 和 CP-1252,但我的输出仍然一团糟。

谢谢大家

0 投票
3 回答
394 浏览

c# - WINDOWS/system32/LogFiles 正在使用中。我怎样才能发现什么程序正在使用它?如果是服务器,我该如何使用它呢?

在 WINDOWS/system32/LogFiles 中打开一个文件

生成异常“因为该文件正在被另一个进程使用”。我怎样才能弄清楚另一个过程是什么?可能是服务器更新日志吗?如果是,我如何确保我关联的计划任务也可以访问?

谢谢!

恐怕我没有在这台服务器上安装程序的授权。

0 投票
2 回答
3518 浏览

c# - 从 HttpResponseStream 读取失败

我遇到了从 HttpResponseStream 读取失败的问题,因为我包裹的 StreamReader 读取速度比响应流获得实际响应的速度更快。我正在检索一个相当小的文件(大约 60k),但是将响应处理为实际对象的解析器失败了,因为它遇到了一个意外字符(代码 65535),根据经验,我知道这是您从StreamReader 并且没有更多可用的字符。

作为记录,我知道返回的内容是有效的并且会正确解析,因为每次运行代码时都会在文件中的不同点发生故障。失败的地方是下面的 parser.Load() 行。

有没有办法确保我在尝试解析它之前已经阅读了所有内容,而不是将响应流复制到 MemoryStream 或字符串中然后处理它?

编辑

为了澄清我已经说过这不是Parser 中的错误,这是 StreamReader 读取速度快于响应流提供数据的问题。我可以通过执行以下操作来解决这个问题,但希望得到更好或更优雅的解决方案的建议:

编辑 2

根据 Eamon 的建议,BlockingStreamReader 类:

编辑 3

这是一个大大改进的解决方案,可以包装任何内容TextReader并提供EndOfStream属性。它使用一个内部缓冲区,该缓冲区通过使用ReadBlock()包装的TextReader. 阅读器的所有 Read() 方法都可以使用这个缓冲区来定义,缓冲区大小是可配置的:

0 投票
3 回答
561 浏览

c# - C# 可以读取不存在的文件吗?

我们有一些 C# 代码使用 StreamReader 从文本文件中读取数据。在一台计算机上,我们可以从文本文件中读取数据,即使它已被删除或替换为不同的文本文件 - File.Exists 调用报告该文件存在,即使它不在 Windows 资源管理器中。但是,在另一台计算机上不会发生这种行为。两台计算机都运行 Vista Business 和 .NET 2.0.50727 SP2。

我们已尝试在没有解决方案的情况下重新启动机器。

有没有人了解这如何可能以及有关可能解决方案的信息?

谢谢,艾伦

0 投票
3 回答
3058 浏览

c# - 在 C# .NET 中加载第一个连接的时间很长

我正在制作一个连接到网站并从中下载 XML 的程序。然后它将信息显示给用户。

我遇到的问题是当我第一次打开程序并开始下载 XML 信息时,它需要很长时间。当我从网站加载另一个页面时,程序仍然打开,下载大约需要半秒钟。我想知道是否有任何方法可以避免这种情况。

我目前使用 HttpWebRequest 下载流和 StreamReader 来读取它。然后我使用 XLINQ 浏览并解析 XML。