c# – StreamReader和寻找
发布时间:2020-12-15 06:32:33 所属栏目:百科 来源:网络整理
导读:您可以使用streamreader读取一个正常的文本文件,然后在读取中间关闭流程器,保存当前位置,然后再次打开流程式读取器,并开始读取这个词? 如果没有什么我可以用来完成相同的情况,而不锁定文件? 这样的: var fs = File.Open(@"C:testfile.txt",FileMode.Open
您可以使用streamreader读取一个正常的文本文件,然后在读取中间关闭流程器,保存当前位置,然后再次打开流程式读取器,并开始读取这个词?
如果没有什么我可以用来完成相同的情况,而不锁定文件? 这样的: var fs = File.Open(@"C:testfile.txt",FileMode.Open,FileAccess.Read); var sr = new StreamReader(fs); Debug.WriteLine(sr.ReadLine());//Prints:firstline var pos = fs.Position; while (!sr.EndOfStream) { Debug.WriteLine(sr.ReadLine()); } fs.Seek(pos,SeekOrigin.Begin); Debug.WriteLine(sr.ReadLine());//Prints Nothing,i expect it to print SecondLine. @lasseespeholt 这里是我试过的代码 var position = -1; StreamReaderSE sr = new StreamReaderSE(@"c:testfile.txt"); Debug.WriteLine(sr.ReadLine()); position = sr.BytesRead; Debug.WriteLine(sr.ReadLine()); Debug.WriteLine(sr.ReadLine()); Debug.WriteLine(sr.ReadLine()); Debug.WriteLine(sr.ReadLine()); Debug.WriteLine("Wait"); sr.BaseStream.Seek(position,SeekOrigin.Begin); Debug.WriteLine(sr.ReadLine()); 解决方法
是的,可以看到:
var sr = new StreamReader("test.txt"); sr.BaseStream.Seek(2,SeekOrigin.Begin); // Check sr.BaseStream.CanSeek first 更新: 更新: File.WriteAllText("test.txt","1234n56789"); long position = -1; using (var sr = new myStreamReader("test.txt")) { Console.WriteLine(sr.ReadLine()); position = sr.BytesRead; } Console.WriteLine("Wait"); using (var sr = new myStreamReader("test.txt")) { sr.BaseStream.Seek(position,SeekOrigin.Begin); Console.WriteLine(sr.ReadToEnd()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |