私は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は無限になります。進んで読み続けるには、あなたのwhileに 'line = fileReader.ReadLine()'を囲む必要があります。 – BasiK