问题标签 [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 投票
9 回答
20027 浏览

c# - .NET C# - 文本文件中的随机访问 - 没有简单的方法?

我有一个文本文件,其中包含多个“记录”。每条记录都包含一个名称和一组数字作为数据。

我正在尝试构建一个将读取文件的类,仅显示所有记录的名称,然后允许用户选择他/她想要的记录数据。

第一次浏览文件时,我只读取标题名称,但我可以跟踪文件中标题所在的“位置”。在用户请求后,我需要随机访问文本文件以查找每条记录的开头。

我必须这样做,因为文件太大而无法在内存(1GB+)中完全读入应用程序的其他内存需求。

我尝试使用 .NET StreamReader 类来完成此操作(它提供了非常易于使用的“ReadLine”功能,但无法捕获文件的真实位置(BaseStream 属性中的位置由于缓冲类使用)。

在 .NET 中没有简单的方法可以做到这一点吗?

0 投票
3 回答
5755 浏览

c# - StreamReader 问题 - 未知文件编码 (western iso 88591)

从输入文件中读取数据时,我注意到 ¥ 符号没有被 StreamReader 读取。Mozilla Firefox 将输入文件类型显示为 Western (ISO-8859-1)。

在玩弄了编码参数后,我发现它成功地适用于以下值:

现在我计划使用“默认”设置,但是我不太确定这是否是正确的决定。现有代码没有使用任何编码,我担心我可能会破坏某些东西。

我对编码知之甚少(或者几乎一无所知)。我该怎么做?我决定使用 System.Text.Encoding.Default 安全吗?我应该要求用户以特定格式保存文件吗?

0 投票
4 回答
17004 浏览

c# - 如何限制 .NET 中 StreamReader.ReadLine() 读取的字符数?

我正在用 C# 编写一个 Web 服务器应用程序,并使用 StreamReader 类从底层 NetworkStream 中读取:

这段代码很容易受到 DoS 攻击,因为如果攻击者从不断开连接,我们将永远不会读完该行。有什么方法可以限制.NET 中 StreamReader.ReadLine() 读取的字符数?

0 投票
4 回答
4034 浏览

c# - 为什么我的循环使用 100% CPU 并且永远不会结束?

我有这个方法:

它从进程 (cmd.exe) 中读取流。当用户关闭 cmd.exe 窗口时,会导致 CPU 使用率跃升至 100%。使用调试器时,我看到它在 sr.ReadLine() 上停止并且永远不会返回。因为这是同时观察 StandardErrorStream 和 StandardOutputStream 它在两个内核上都使用 100%。

如果您需要,这里还有一些项目代码。

另一个有趣的是,它并不总是像应有的那样隐藏 cmd 窗口。它第一次隐藏它,然后第二次(或之后)它不会隐藏它。这是用户可以关闭 cmd.exe 窗口并使 readline 变得有趣的时候。它也永远不会读取输出到 cmd 的最后一行,除非它退出。

对于如何解决这个问题,有任何的建议吗?

0 投票
2 回答
4018 浏览

sql-server - 如何在 SSIS VBScript 中指定 EOF?

在 SSIS VBScript 中读取直到文件结尾的语法是什么?

编辑:我实际上是在尝试获取文件中最后一行的值。因此,读取直到不是 EOF 与读取到文件末尾并不完全相同。但是我删减了很多,以至于我的示例代码很差。

0 投票
3 回答
1258 浏览

text - 如何确定 .NET 中文件的内容类型?

我得到了一个文件名,我必须能够从磁盘读取它并通过网络发送它的内容。我需要能够确定文件是文本文件还是二进制文件,以便知道是使用 StreamReader 还是 BinaryReader。我需要知道内容类型的另一个原因是,如果它是二进制的,我必须在通过网络发送数据之前对数据进行 MIME 编码。我还希望能够告诉消费者内容类型是什么(如果是文本,包括编码)。

谢谢!

0 投票
3 回答
4799 浏览

asp.net - .NET StreamReader 不会关闭

我使用 RTF 文件作为 ASP.NET Web 应用程序的模板。我的 VB.NET 代码使用 StreamReader 读取文件,替换一些字符串,并使用数据库中的数据创建一个新的 Word 文档。我的代码关闭并处理了 StreamReader。但是,当我尝试将修改后的 RTF 文件上传到 Web 服务器时,我收到错误消息“无法打开文件进行写入”。因此很明显,在 ASP.NET 页面运行后很长时间该文件仍处于打开状态。

如何强制 StreamReader 关闭?即使编辑 web.config 文件以强制 Web 应用程序重新启动,也不足以终止对该文件的锁定。

0 投票
3 回答
2632 浏览

c# - 编码 CDATA 元素的有效方法

好的,我正在使用 StreamReader 从流中读取数据。流中的数据不是 xml,它可以是任何东西。

基于输入 StreamReader,我正在使用 XmlTextWriter 写入输出流。基本上,当一切都说完了,输出流包含来自输​​入流的数据,这些数据包装在父元素中包含的元素中。

我的问题是双重的。数据以块的形式从输入流中读取,StreamReader 类返回 char[]。如果输入流中的数据包含“]]>”,则需要将其拆分为两个 CDATA 元素。首先,如何在 char 数组中搜索“]]>”?其次,因为我是分块阅读,所以“]]>”子字符串可以分成两个块,那么我该如何解释呢?

我可能会将 char[] 转换为字符串,然后对其进行搜索替换。这将解决我的第一个问题。在每次读取时,我还可以检查最后一个字符是否是“]”,以便在下一次读取时,如果前两个字符是“]>”,我将开始一个新的 CDATA 部分。

这看起来几乎没有效率,因为它涉及将 char 数组转换为字符串,这意味着要花费时间来复制数据,并占用两倍的内存。有没有更有效的方法,无论是在速度方面还是在内存方面?

0 投票
5 回答
2712 浏览

c# - 如何直接在记事本上显示来自 StreamReader 的内容?

有没有办法直接在记事本窗口中显示内存中的内容?

0 投票
3 回答
2125 浏览

c# - 使用 StreamReader 时如何指定从何处开始读取文件?

使用 StreamReader 时如何指定从何处开始读取文件?

我创建了一个流读取器对象,以及一个文件流对象。创建两个对象后,我将如何控制我希望 StreamReader 从文件开始读取的位置?

假设文件的内容如下,

我将如何控制流阅读器从 #2 中读取?另外,我怎么能控制在哪里停止读取类似的定界符,如#5?

编辑:通过分隔符,我的意思是一种让 StreamReader 从 ('2.') 开始读取的方法