c# - 将文件光标向上移动?

标签 c# file-io streamreader

我疯狂地用谷歌搜索了这个,但我似乎找不到任何关于这种特定类型问题的引用。

我有一个带有文件的 StreamReader 对象,我想读取文件中一定数量的行一定次数,但是,似乎没有任何办法将文件光标移动到文件中的特定位置。

(没有代码,因为我不知道如何编写这样的代码)

最佳答案

你应该可以使用

myStreamReader.BaseStream.Position = desiredPosition;
myStreamReader.DiscardBufferedData();

将流移动到特定位置。

编辑:下一个问题是如何找到 desiredPosition .由于您想通过文件向后移动位置,而不是向前,因此您已经读取了某个位置的每个位置。您需要在阅读台词时跟踪您在流中的位置,并将位置存储在 List<int> positions 中。 .最初,该列表应包含 0在零位置。在处理线条时,将线条的长度加上换行符的大小添加到列表中。当你想回到 k 行时, positions[k]应该有你需要的职位。

例如,如果您的文件包含以下行,则您的编码使用每个字母一个字符,并且文件中的行分隔符是 Windows 样式的 \r\n

Quick
brown fox
jumps over lazy
dog

然后是你的positions列表应该有 {0, 7, 17, 34}请注意,我在每行中添加了 2 个分隔符。

附言这是一个丑陋的解决方案,不是吗?如果有什么安慰的话,你不是第一个遇到它的人。 Here is a somewhat obscene rant来自想在 2007 年解决类似问题的人。

关于c# - 将文件光标向上移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769609/

相关文章:

c# - 删除 "/*"和 "*/"之间的文本( block 注释)

c# - 你能从 StreamReader 对象中获取文件路径吗?

c# - 使用线程在 C# 中接收数据包

c# - 为什么不能在 C# 7.2 的结构中同时使用只读缓冲区和固定大小缓冲区

c# - 在 AJAX Accordion 中更新 DataGrid

php - PHP中随机选择文件

c# - c# 中的 Async 和 yield 关键字

c# - 如何获得更好的读取文件的方法?

java - 使用扫描仪逐行读取文件并从数据中创建对象

C文件读取留下乱码