C#:String.IndexOf到FileStream.Seek
使用StreamReader读取文件流(这是一个非常大的文件),如何将文件流的查找位置设置为某个子字符串的第一次出现,以便从给定点开始读取这个大文件 谢谢看看MSDN上的示例C#:String.IndexOf到FileStream.Seek,c#,C#,使用StreamReader读取文件流(这是一个非常大的文件),如何将文件流的查找位置设置为某个子字符串的第一次出现,以便从给定点开始读取这个大文件 谢谢看看MSDN上的示例 filestream=new FileStream(s.Substring(s.IndexOf("string"),s.Length),FileMode.Open,FileAccess.Read); 看一看MSDN上的示例 filestream=new FileStream(s.Substring(s.IndexOf("
filestream=new FileStream(s.Substring(s.IndexOf("string"),s.Length),FileMode.Open,FileAccess.Read);
看一看MSDN上的示例
filestream=new FileStream(s.Substring(s.IndexOf("string"),s.Length),FileMode.Open,FileAccess.Read);
档案里有什么?只有几行Unicode文本?那你就有问题了 在至少阅读一次之前的所有行之前,您永远不会知道行首的位置。除非文件是以UTF-32编码的,否则每个字符可能会采用可变的字节数来表示它。每条线的长度都是可变的
你能做的最好的事情就是扫描文件一次,然后在索引中记下行首的位置。文件中有什么?只有几行Unicode文本?那你就有问题了 在至少阅读一次之前的所有行之前,您永远不会知道行首的位置。除非文件是以UTF-32编码的,否则每个字符可能会采用可变的字节数来表示它。每条线的长度都是可变的
您所能做的最好的方法是在文件中扫描一次,然后在索引中记下行首的位置。
FileStream
无法为您进行搜索。您必须手动搜索它。您可能需要使用高效的字符串搜索算法,例如。FileStream
无法为您执行搜索。您必须手动搜索它。可能您需要使用一种高效的字符串搜索算法,例如。如果您是指第一次读取文件,那么您必须阅读才能知道(特定字符串)的位置。下次如果文件的内容没有改变,你可以记住这个位置(在同一个程序运行中使用的某个变量中),设置流位置并开始读取它。如果你是指第一次读取文件,那么你必须读取才能知道(特定字符串的)位置。下次如果文件内容没有改变,您可以记住这个位置(在同一程序运行中使用的某个变量中),设置流位置并开始读取它。也许这会有帮助(使用.NET Framework构建正则表达式流搜索):
这可能会有所帮助(使用.NET Framework构建正则表达式流搜索):
那篇文章是关于锁定文件的一部分。不确定它与这个问题有什么关系?…我不知道你认为FileStream构造函数在做什么。那篇文章是关于锁定文件的一部分。不确定它与这个问题有什么关系?…我不知道您认为FileStream构造函数在做什么。