フォーマットが少し複雑なファイルを解析して検証する必要があります。
基本的に、ファイルは次の形式で提供されます。
\n -- just to make clear it may have empty lines
CLIENT_ID
A_NUMERIC_VALUE
ONE_LINE_OF_SOME_RANDOM_COMMENT_ABOUT_THE_CLIENT
ANOTHER_LINE_OF_SOME_RADOM_COMMENT_ABOUT_THE_CLIENT
\n
\n
CLIENT_ID_2
A_NUMERIC_VALUE_2
ONE_LINE_OF_SOME_RANDOM_COMMENT_ABOUT_THE_CLIENT_2
ANOTHER_LINE_OF_SOME_RADOM_COMMENT_ABOUT_THE_CLIENT_2
OHH_THIS_ONE_HAS_THREE_LINES_OF_COMMENTS
ファイルが大きくなることはめったにありません (10 MB はおそらく私が今まで見た中で最大のファイルです。通常は約 900kb-1mb です)。
だから私は2つの問題があります:
1) ファイルの形式を効果的に検証するにはどうすればよいですか? 正規表現 + スキャナーを使用していますか? (各クライアント エントリを 1 つの文字列に変換できる場合、これは非常に実現可能なオプションだと思います。そのため、正規表現を適用できます)。
2) ファイル内の各エントリを Client オブジェクトに変換する必要があります。ファイルを Java オブジェクトに変換する前に、ファイル全体を検証する必要がありますか? それとも、エントリを Java オブジェクトに変換する際にファイルを検証する必要がありますか? (いずれかのクライアント エントリが無効な場合、処理はすぐに停止し、例外がスローされることに注意してください。したがって、作成されたオブジェクトはすべて破棄されます)。
質問 1 についてのご提案をお待ちしております。質問 2 は、この状況をどのように処理するかについての私の好奇心です。#2 は無視してください。ただし、#1 に答えてください =)
ところで、ファイルの処理に役立つフレームワークを知っている人はいますか?
ありがとう。
アップデート:
この質問を見ましたが、問題は私のものと非常に似ていますが、正規表現がこの問題を解決する最善の方法であるかどうかはわかりません。ファイル全体に非常に多くの "\n" があり、各クライアント エントリとオプションの ID ごとにさまざまな数のコメントが含まれている可能性があります。したがって、正規表現は非常に複雑になる必要があります。そのため、質問#1で各エントリを1行に変換することについて言及しました。この方法は、検証する正規表現を作成するのがはるかに簡単だからです...にもかかわらず、このソリューションは私の耳にはあまりエレガントに聞こえません:(
乾杯。