我想以某种方式从.txt
文件中读取我希望将指针移动到特定位置然后读取包含字符串的.txt
文件,如下所示
BLOCK1
string1
string2
string3
.....
.....
ENDOFBLOCK
BLOCK2
string1
string2
string3
.....
.....
ENDOFBLOCK
BLOCK3
string1
string2
string3
......
......
ENDOFBLOCK
而不是从头开始读取文件我希望将指针移动到包含字符串BLOCK2
的行,并读取包含字符串ENDOFBLOCK
的行。我想要一些C#方法来搜索文件中的字符串。
如果找到,则将文件中的指针移动到包含该字符串的行,并逐行读取文件到特定字符串。我希望我是
能够清楚地说出我想做什么。实际上我正在使用乌尔都语语言,这就是为什么我无法分享实际代码的例子。
答案 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");
}
}
}
}