【发布时间】:2010-11-18 18:38:49
【问题描述】:
给定一个文本文件,我将如何读取任意行而文件中没有其他内容?
说,我有一个文件 test.txt。我将如何读取文件中的第 15 行?
我所看到的只是将整个文本文件存储为字符串数组,然后使用行号的值作为要从数组中使用的字符串的编号......但有一些复杂性:文本文件非常庞大,而我正在编写的应用程序的机器并不完全是一流的系统。速度不是重中之重,但绝对是一个主要问题。
有没有办法仅读取文本文件的特定行并将结果存储为字符串?
感谢您的回复: 该文件是有点结构化的。它有 25 行信息,然后是 X 行数字,但前 25 行中的第 17 行的值为 X。
但是,有 1 个空白行,它作为文件中的第二条记录重复自身,并且 X 可以为每条记录具有不同的值。
我想要做的是读取前 25 行并将其存储为独立值,然后将接下来的 X 行(通常大约 250 行)存储为数组。然后我将它存储在 SQL 数据库中,并重复 NEXT 记录,直到我到达第 Y 条记录(文件中的记录数在第 3 行)
编辑 2: 好的,我想我已经根据大家的回答得出了一个解决方案。
我将读取前 25 行并将其存储为数组。我会将数组的相关内容复制到局部变量,然后删除前 25 行。然后,我可以使用该信息将接下来的 X 行(数组中第 13 项的值)存储为数组,对其进行序列化,将其存储在数据库中,然后删除我刚刚读取的行.
然后我可以为每个后续记录重复该过程。
当然,这取决于我所做的一个假设,老实说,我不确定这是真的。是否可以在 C# 中从文本文件中删除前 n 行,而无需阅读整个内容并在没有前 n 行的情况下重新编写它? p>
【问题讨论】:
-
行本身是否固定长度(以字节为单位)。这对可用的解决方案类型产生了很大的影响
-
“它有 25 行信息”:我认为这与下面提到的固定行假设相矛盾,您只需阅读所有行并沿途获取您想要的内容。
-
你真正需要的不是直接获取第i行的系统。您只需要一次性处理文件并在其中执行一些操作。您可以使用我的答案(
ReadLine方法)中的代码 sn-p 一次读取一行。 -
谢谢大家,我想我找到了解决方案 * if * 我可以有效地执行前 n 行。
-
我不知道你为什么需要删除这些行?你不能继续阅读你需要的下一行吗?