これは私の問題です。プログラムは、ログ ファイルを特定のフォルダーに書き込みます。ログ ファイルが作成されると、約 5MB に達するまで約 2 秒ごとに書き込まれます。その後、新しいファイルが作成されます。ログファイルを解析してリアルタイムでデータを収集しています。
ディレクトリへの変更をリッスンするためにディレクトリ モニタを使用しています。変更が検出されると、NSfilemodocation の日付を比較して、監視する最新のファイル名を取得できます。
次に、そのファイル名を使用して NSinput ストリームを作成します。バッファを作成し、ストリームを開いて「hasBytesAvail」かどうかを確認し、解析を開始します。
私の問題は次のとおりです。ファイルの最後に到達し、EventEndOfStream が呼び出されてストリームが破壊されます。
2 つのオプションがあります。
新しいファイルが作成されるまで、バイト読み取り変数を最新の状態に保ちます。つまり、2 秒ごとにストリームを何度も再作成する必要があり、無駄に思えます。
現在のファイルがディレクトリ内の最新のファイルである限り、ストリームが閉じられないようにします。これは簡単に聞こえますが、それを行うには、ストリームを閉じて割り当てを解除するトリガーとなるファイルの最後まで読み取る必要があります。
簡単に言えば、フォルダーを監視して、監視するファイルの名前を取得したいと考えています。次に、ファイルを監視し、最後に読み取られてからの新しいバイトのみを読み取ります。NSInputstream の不要なインスタンスなし。
誰か提案はありますか?