C# 等待string.contains()条件满足
我正在向我的C#应用程序读取一个文件,并使用gzip流解压缩一个tile#u数据块。我目前正在通过以下方法访问BLOB数据:C# 等待string.contains()条件满足,c#,loops,C#,Loops,我正在向我的C#应用程序读取一个文件,并使用gzip流解压缩一个tile#u数据块。我目前正在通过以下方法访问BLOB数据: SQLiteCommand command = new SQLiteCommand(query, DbConn); SQLiteDataReader reader = command.ExecuteReader(); bool isMet = false; while (reader.Read()) { using (var file = reader.GetSt
SQLiteCommand command = new SQLiteCommand(query, DbConn);
SQLiteDataReader reader = command.ExecuteReader();
bool isMet = false;
while (reader.Read())
{
using (var file = reader.GetStream(0))
using (var unzip = new GZipStream(file, CompressionMode.Decompress))
using (var fileReader = new StreamReader(unzip))
{
var line = fileReader.ReadLine();
while (!fileReader.EndOfStream)
{
}
Console.WriteLine("End of tile_data");
}
}
reader.Close();
Console.WriteLine("Reader closed");
Console.ReadKey();
}
catch (Exception e)
{
Console.Write(e.StackTrace);
Console.ReadKey();
}
我希望等到文件阅读器
检测到“第三方”
(字符串)之后再打印所有数据。我试图使用bool
和嵌套的while循环
,但它作为一个无限循环返回,因此产生了这个问题
我使用的代码(失败的代码):
满足条件后,如何仅使用我的
文件读取器执行操作?行var line=fileReader.ReadLine()代码>是否在while循环中
while (!fileReader.EndOfStream)
{
var line = fileReader.ReadLine();
// do some other stuff
}
行var line=fileReader.ReadLine()代码>是否在while循环中
while (!fileReader.EndOfStream)
{
var line = fileReader.ReadLine();
// do some other stuff
}
只有当流只有一行时,fileReader.EndOfStream
循环才会工作。问题是,你只能从流中读取一次——因此,除非你已经阅读了全部内容,否则你将处于一个无止境的循环中
相反,可以这样做:
string line;
while ((line = fileReader.ReadLine()) != null)
{
if (line.Contains("...")) break; // Or whatever else you want to do
}
只有当流只有一行时,fileReader.EndOfStream
循环才会工作。问题是,你只能从流中读取一次——因此,除非你已经阅读了全部内容,否则你将处于一个无止境的循环中
相反,可以这样做:
string line;
while ((line = fileReader.ReadLine()) != null)
{
if (line.Contains("...")) break; // Or whatever else you want to do
}
您可以使用此代码。它可以在字符串中找到任何字符。它对我有用
string matchStr = "tertiary";
if (line.Any(matchStr.Contains)
{
isMet = true;
}
while (!fileReader.EndOfStream && isMet)
{
Console.WriteLine(line);
}
您可以使用此代码。它可以在字符串中找到任何字符。它对我有用
string matchStr = "tertiary";
if (line.Any(matchStr.Contains)
{
isMet = true;
}
while (!fileReader.EndOfStream && isMet)
{
Console.WriteLine(line);
}
试试这样的
var yourval;
var secval = fileReader.ReadLine()
while ((yourval = secval ) != null)
{
if (line.Contains("your string here"))
{
break;
}
}
试试这样的
var yourval;
var secval = fileReader.ReadLine()
while ((yourval = secval ) != null)
{
if (line.Contains("your string here"))
{
break;
}
}
哎呀,这是以前的事,但我想我在这里发布之前忘了把它移回去,我在测试一些东西。谢谢:)哦,这是以前的,但我想我在这里发布之前忘了把它移回去,我正在测试一些东西。谢谢:)检查答案。告诉我它是否对你有效。在你的while循环中,你没有阅读/处理文件阅读器,因此你永远不会到达流的末尾,你的while将是无限的。您应该在while中附上一个“line=fileReader.ReadLine()”以继续阅读。检查答案。告诉我它是否对你有效。在你的while循环中,你没有阅读/处理文件阅读器,因此你永远不会到达流的末尾,你的while将是无限的。您应该在while中包含一个“line=fileReader.ReadLine()”,以便继续阅读。