我正在讀取文件到我的C#應用程序並使用gzip流解壓縮tile_data BLOB。我目前通過這種方法訪問BLOB數據:等待string.contains()條件滿足
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();
}
我期待等到fileReader
檢測"tertiary"
(串),然後再把打印的所有數據。我試圖使用一個bool
和一個嵌套的while loop
,但它作爲一個無限循環回來,因此是一個問題。
,我用(與失敗)的代碼:
if (line.Contains("tertiary"))
{
isMet = true;
}
while (!fileReader.EndOfStream && isMet)
{
Console.WriteLine(line);
}
如何我只能用我的fileReader
一旦條件滿足執行操作?
檢查答案。告訴我它在爲你工作或不在。 – Developer
在你的while循環中,你沒有讀取/處理fileReader,因此你永遠不會到達流的末尾,你的while將會是無限的。你應該在你的時候附上一個'line = fileReader.ReadLine()'來繼續閱讀。 – BasiK