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

c# - c# 几秒钟后停止流式阅读器。这可能吗?

我有网络请求,我用流式阅读器阅读信息。我想在 15 秒后在这个流媒体阅读器之后停下来。因为有时阅读过程需要更多时间,但有时进展顺利。如果阅读过程需要超过 15 秒的时间,我该如何停止?我对所有想法持开放态度。

0 投票
2 回答
1246 浏览

asp.net - 使用 asp.net 中的 Web 应用程序从我的电脑浏览文件

我有一个使用 IIS 上传的 Web 应用程序。我希望使用该应用程序的用户能够选择位于他们(用户)计算机上的文件并读取其内容。

代码是:

当我从我的电脑上运行它时,它可以工作。但是当我尝试从 IIS 运行它时,它给了我以下错误:

我了解应用程序无法从用户 pc 读取文件。知道如何使它工作吗?

谢谢!

格雷格

0 投票
2 回答
1549 浏览

c# - StreamReader ReadBlock 挂在二进制文件上

我有一个小类,它接受来自包含文件上传的浏览器的 POST。我正在使用 StreamReader 来读取它。我读取了标题,然后当我到达正文时,我得到了内容长度并制作了一个该大小的数组,然后stream.ReadBlock()是:

当我运行它并发布一个文本文件时,它工作正常。但是,我尝试了 ZIP 文件和 MP3 文件,但这些都不起作用。它只是挂断stream.ReadBlock()电话。

我首先在带有 Mono 2.6.7 的 Ubuntu 10.04 上尝试了这个(我的 MonoDevelop 项目设置为使用 .net 3.5)。我刚刚通过在 VisualStudio 2010 和 .net 3.5 中运行相同的项目验证了在 Windows7 上发生了同样的事情。我试过从 Firefox 和 Chrome 发布。

任何人都知道为什么会发生这种情况?谢谢。

我还尝试使用 BinaryReader 而不是 StreamReader:

但无论现在如何,它最终都会挂在那个电话上。是因为我使用 StreamReader 读取 POST 的标题,然后使用 BinaryReader 读取正文吗?

0 投票
2 回答
6697 浏览

c# - 如果我处置其底层流,我是否需要处置 XmlReader?

我有以下从文件GetData创建的方法。StreamReader

mainParser.LoadDocument(bs)调用以下内容:

StreamReader由 处置GetData。这是否意味着我不必处置,XmlReader因为(我相信)这将处置其唯一的非托管资源?

0 投票
4 回答
1907 浏览

c# - 有没有更快的方法从文件中读取并插入 SQLite

大家下午。我对 SQLite 不是很熟悉,所以我没有弄乱数据库的所有设置。我对 SQL Server、Oracle 甚至一些 Access 和 mySQL 都比较熟悉。好吧,目前,我正在获取一个包含 110,000 多条记录的文件,并逐行读取文件,解析数据并将插入语句运行到表中。该表取决于作为行的第一个字段的记录类型。好吧,我现在正在加载它,它已经运行了 12 分钟(在我写这篇文章的时候)并且只导入了 14,000 条记录。算一下,这意味着它需要 1 小时 15 分钟到 1 小时 30 分钟。取决于我系统的其余部分当时的行为方式。因为有不同的记录类型,我不能 如果有 SQLite 选项(不确定是否有),则不要进行批量插入。这是作为后台工作人员运行的。下面是提取和解析数据的函数,以及将数据插入数据库的函数。请记住,这是一个 MVC 格式的 C# 应用程序(就像我控制它并且没有时间重组它时那样):

MainForm.cs 后台工作函数

Importer.cs 导入函数

DataFactory.cs ImportIPB 函数

Database.cs ExecuteNonQuery 方法

任何人都可以从提供的内容中看到任何可以改进的地方吗?后台工作人员是否有可以设置为更快工作的设置?后台工作人员是否有默认设置?db 文件中有哪些可以更改(使用 SQLite Expert Personal)以加快插入速度的设置?它只是我文件的大小吗?现在,当我完成这个时,它刚刚过去了 22 分钟,并且完成了 24,000 条记录。这不是一个时间敏感的问题,所以请花点时间。谢谢。

更新:另外,我想我应该提到在其中一个表上我有一个整数主键(充当身份字段)。这可能有任何性能问题吗?

0 投票
4 回答
1909 浏览

c# - *.CSV- 中的搜索行

我不敢相信,最简单的任务是行不通的!

我只想使用 StreamReader-Class 循环遍历 csv 文件并在关联行中找到一个键。例如:

  1. 键1;值1
  2. 键2;值2
  3. 键3;值3

如果密钥存在,则没有问题。否则应该达到EOF,但它不起作用!

如果我丢弃缓冲的数据,每次都会到达 EOF。结果将找不到任何密钥。

编辑:所有建议,但结果相同!

0 投票
4 回答
7642 浏览

c# - 分批从 StreamReader 中读取

在尝试通过 StreamReader 将 800MB 文本文件加载到 DataTable 时,我遇到了 OutOfMemory 异常。我想知道是否有办法从内存流中批量加载 DataTable,即从 StreamReader 读取文本文件的前 10,000 行,创建 DataTable,使用 DataTable 执行某些操作,然后将接下来的 10,000 行加载到 StreamReader 和很快。

我的谷歌在这里不是很有帮助,但似乎应该有一个简单的方法来做到这一点。最终,我将使用 SqlBulkCopy 将 DataTables 写入 MS SQL 数据库,因此如果有比我所描述的更简单的方法,我将感谢您提供正确方向的快速指针。

编辑 - 这是我正在运行的代码:

这是返回的错误:

“System.OutOfMemoryException:
在 System.String.Split(Char[] separator, Int32 count, StringSplitOptions options)
at System.String.Split(Char[] separator}
at Harvester.Config .PopulateDataTableFromText(DataTable dt, String txtSource) 在 C:...."

关于将数据直接加载到 SQL 中的建议 - 在 C# 方面我有点菜鸟,但我认为这基本上就是我正在做的事情?SqlBulkCopy.WriteToServer 获取我从文本文件创建的 DataTable 并将其导入 sql。有没有更简单的方法可以做到这一点,我错过了?

编辑:哦,我忘了提 - 此代码不会与 SQL Server 在同一台服务器上运行。数据文本文件位于服务器 B 上,需要写入服务器 A 中的表。这是否排除了使用 bcp?

0 投票
4 回答
43743 浏览

c# - 在 C# 中同时读写文件

我有一个文件,其中包含我想监视更改以及添加我自己的更改的数据。像“Tail -f foo.txt”一样思考。

基于这个线程,看起来我应该只创建一个文件流,并将其同时传递给写入器和读取器。但是,当阅读器到达原始文件的末尾时,它看不到我自己编写的更新。

我知道这似乎是一个奇怪的情况......它更像是一个实验,看看它是否可以完成。

这是我尝试过的示例:


foo.txt:
a
b
c
d
e
f


超过“f”后,阅读器返回 null。

0 投票
3 回答
3466 浏览

c# - 表单退出时关闭 Stream Read 和 Stream Writer

大家好,这里有点麻烦。

所以我有一个加载文件的加载按钮和一个保存文件的保存按钮。我还有一个关闭程序的退出按钮。我需要帮助的是当我关闭程序时,我不会检查是否有任何未关闭的 StreamReader 或 StreamWriter 东西。

这是我目前所拥有的:在顶部,我清除了这些人

我的加载按钮看起来像这样

我的保存按钮看起来像这样

我的退出按钮看起来像这样

我试图做的是在顶部设置 bool isDirtyBoolean,然后当 Stream Reader 或 Writer 关闭时,将 bool 值设置为 true,所以当我退出应用程序时,如果它仍然设置为 false,它无论如何都会关闭它们。

但这不起作用,因为 isDirtyBoolean 值是那些私有的 void 按钮,我无法访问它们。

0 投票
6 回答
7552 浏览

c# - 为什么处理 StreamReader 会使流不可读?

我需要从头到尾读取两次流。

但是下面的代码会抛出ObjectDisposedException: Cannot access a closed file异常。

为什么会这样?真正处置的是什么?为什么操作StreamReader会以这种方式影响关联的流?期望一个可搜索的流可以被多次读取,包括几个StreamReaders,这难道不是合乎逻辑的吗?