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

c# - Difference between StreamReader.Read and StreamReader.ReadBlock

The documentation simply says ReadBlock is

"a blocking version of Read"

but what does that mean?

Someone else has asked the question before but, huh?

http://www.pcreview.co.uk/forums/thread-1385785.php

The guy answering said

Basically, it means that you can rely on StreamReader.ReadBlock not returning until either it's read as much as you've asked it to, or it's reached the end of the stream.

Am I understanding correctly that this is required because Read may not give you everything you asked for? And that just because it returns 0 does NOT mean you reached the end of the file?

So this means check something other than the number of bytes returned (EndOfStream?) or use ReadBlock instead?

0 投票
5 回答
501 浏览

c# - 冗长的代码行与可读性

这是非常好的 C# 代码,并且在提供正确的 URL 时可以正常工作。但是通过降低代码的可读性,一切都只是在一行中完成。

这是代码:

我只是想知道开发人员对这种写代码的捷径有什么看法

0 投票
1 回答
7872 浏览

.net - 使用 StreamReader 读取文件时的文件编码

我现在遇到一个问题,摄氏符号被读取为 C 而不是°C。

看起来像编码的罪魁祸首。我试图这样做:

代替

但我现在收到垃圾......原始文件编码是否必须与 StreamReader 编码匹配?我正在使用紧凑型框架 2.0。

我在网上找到了这个,但如果使用它,我已经将它全部读入一个字节数组,检测每一行的结尾,将其转换为 Unicode,然后继续执行程序逻辑。有人用过这个类吗?

0 投票
2 回答
2023 浏览

compact-framework - 在 Compact Framework 中读取 StreamReader 后转换文件编码

我逐行阅读文本文件,到目前为止一切顺利。我只是用这个:

现在我注意到我可能需要在阅读文件后将其转换为 Unicode。它是如何完成的?有人使用 Convert 类吗?

0 投票
5 回答
24592 浏览

c# - 需要使用 StreamReader.ReadLine() 获取行终止符

我编写了一个 C# 程序来读取 Excel .xls/.xlsx 文件并输出为 CSV 和 Unicode 文本。我编写了一个单独的程序来删除空白记录。这是通过读取每一行来完成的StreamReader.ReadLine(),然后逐个字符地遍历字符串,如果它包含所有逗号(对于 CSV)或所有制表符(对于 Unicode 文本),则不将行写入输出。

当 Excel 文件在单元格内包含嵌入的换行符 (\x0A) 时,就会出现此问题。我将我的 XLS 更改为 CSV 转换器以找到这些新行(因为它逐个单元格)并将它们写为 \x0A,而普通行只使用 StreamWriter.WriteLine()。

该问题出现在单独的程序中以删除空白记录。当我读入 with 时StreamReader.ReadLine(),根据定义,它只返回带有行的字符串,而不是终止符。由于嵌入的换行符显示为两个单独的行,因此当我将它们写入最终文件时,我无法分辨哪个是完整记录,哪个是嵌入的换行符。

我什至不确定我是否可以读取 \x0A,因为输入上的所有内容都注册为“\n”。我可以一个字一个字地去,但这破坏了我删除空行的逻辑。

0 投票
1 回答
607 浏览

c# - C# 3.0 ElementAt 是否因迭代器函数而损坏?

谁能告诉我为什么下面的代码不能按我期望的方式工作?我正在尝试围绕 StreamReader 编写一个 IEnumberable 包装器,但是当我在其上使用 ElementAt 时,它会从流中读取顺序字符,而不管我传递给 ElementAt 的索引如何。

文件“test.txt”包含“abcdefghijklmnopqrstuvwxyz”。我希望输出是:

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 啊啊
啊啊

相反,我得到

abcdefghijklmnopqrstuvwxyz

并且 ArgumentOutOfRangeException 被调用,即使到目前为止我传递给 ElementAt 的唯一索引是 0。

MSDN 说:

如果源的类型实现 IList<(Of <(T>)>),则该实现用于获取指定索引处的元素。否则,此方法获取指定元素。

应该读作“获得下一个元素”吗?如果是这样,那有点违背了惰性列表的目的......

0 投票
5 回答
48754 浏览

c# - using 子句会关闭此流吗?

我显然已经养成了一个不好的编码习惯。这是我一直在编写的代码示例:

我认为这是因为该using子句明确调用Close()and Dispose()on theStreamReaderFileStream将被关闭。

我可以解决我遇到的问题的唯一方法是将上面的块更改为:

是否应该StreamReader通过在第一个区块中的处置来关闭底层证券FileStream?或者,我弄错了吗?

编辑

我决定发布实际有问题的代码块,看看我们是否能找到这个问题的根源。我现在只是好奇。

我以为我的using子句有问题,所以我将所有内容都扩展出来,但每次都无法复制。我在这个方法调用中创建了文件,所以我认为没有其他任何东西在文件上打开了句柄。我还验证了Path.Combine调用返回的字符串是否正确。

0 投票
7 回答
31317 浏览

c# - 如何知道流阅读器在文本文件中的位置(行号)?

一个例子(这可能不是现实生活,但要说明我的观点):

GetLinePosition这是streamreader的一个假想扩展方法。这可能吗?

当然,我可以自己数数,但这不是问题。

0 投票
4 回答
25446 浏览

c# - 从流式阅读器读取一行而不消耗?

有没有办法提前读一行来测试下一行是否包含特定的标签数据?

我正在处理一种有开始标签但没有结束标签的格式。

我想阅读一行将其添加到结构中,然后测试下面的行以确保它不是新的“节点”,如果它关闭该结构并创建一个新的,则如果它没有继续添加

我能想到的唯一解决方案是让两个流阅读器同时进行锁定步骤,​​但这似乎很浪费(如果它甚至可以工作的话)

我需要像 peek 但 peekline 这样的东西

0 投票
4 回答
1869 浏览

.net - 为什么 .NET Framework StreamReader / Writer 默认为 UTF8 编码?

我只是在查看 StreamReader / Writer 的构造函数,我注意到它默认使用 UTF8。有谁知道这是为什么?我原以为默认使用 Unicode 会更安全。