我疯狂地用谷歌搜索了这个,但我似乎找不到任何关于这种特定类型问题的引用。
我有一个带有文件的 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/