将c#中的文件指针移动到包含特定字符串

时间:2015-06-06 09:06:40

标签: c#

我想以某种方式从.txt文件中读取我希望将指针移动到特定位置然后读取包含字符串的.txt文件,如下所示

BLOCK1
string1
string2
string3
.....
.....
ENDOFBLOCK
BLOCK2
string1
string2
string3
.....
.....
ENDOFBLOCK
BLOCK3
string1
string2
string3
......
......
ENDOFBLOCK

而不是从头开始读取文件我希望将指针移动到包含字符串BLOCK2的行,并读取包含字符串ENDOFBLOCK的行。我想要一些C#方法来搜索文件中的字符串。 如果找到,则将文件中的指针移动到包含该字符串的行,并逐行读取文件到特定字符串。我希望我是 能够清楚地说出我想做什么。实际上我正在使用乌尔都语语言,这就是为什么我无法分享实际代码的例子。

3 个答案:

答案 0 :(得分:1)

这应该有效:

using System;
using System.IO;

public class Program
{
    public static void Main()
    {
        using (var fileStream = File.Open(@"c:\test.txt", FileMode.Open))
        {
            using (var streamReader = new StreamReader(fileStream))
            {
                string line = "";
                while (line != "BLOCK2" && line != null)
                {
                    line = streamReader.ReadLine();
                }

                line = streamReader.ReadLine();

                while (line != "ENDOFBLOCK" && line != null)
                {
                    Console.WriteLine(line);
                    line = streamReader.ReadLine();
                }
            }
        }
    }
}

答案 1 :(得分:0)

因为你不知道block2从哪里开始,你需要从顶部读取文件,直到你到达字符串block2。(未经测试的例子)

while((line = file.ReadLine()) != "BLOCK2"){}
//block2 found
while((line = file.ReadLine())  != "ENDOFBLOCK") {
//this is what you want
}

答案 2 :(得分:0)

感谢venerik和每个人的帮助。下面的代码对我有用。实际上我不知道文件中是否发生了特定的BLOCK。所以我必须首先读取一个文件并在发现BLOCK时中断

     public partial class MainWindow : Window
{
    String stringfound;
    public MainWindow()
    {
        InitializeComponent();
    }
    void clickhandler(object sender, RoutedEventArgs e)
    {
        String line;
        try
        {
            StreamReader file = new StreamReader("d:\\test.txt");


                while((line = file.ReadLine()) != null )
                {
                    if (line.Contains("BLOCK2")) 
                    {
                        stringfound=line;
                        break;


                    }


                }

            if(stringfound=="BLOCK2") // checking if BLOCK2 exists or not
            {
                while (line != "ENDOFBLOCK" && line != null)
                {
                    line = file.ReadLine();


                }
            }
            else                 // BLOCK2 not found
            {
               // do something else  
            }



        }
        catch(Exception)
        {
            MessageBox.Show("unknown exception occurred");
        }


    }
}

}