文字列に読み込んでいるログファイルがあります
public static String read (String path) throws IOException {
StringBuilder sb = new StringBuilder();
FileInputStream fs = new FileInputStream(path);
InputStream in = new BufferedInputStream(fs);
int r;
while ((r = in.read()) != -1) {
sb.append((char)r);
}
fs.close();
in.close();
return sb.toString();
}
次に、文字列全体を1回繰り返すパーサーがあります
void parse () {
String con = read("log.txt");
for (int i = 0; i < con.length; i++) {
/* parsing action */
}
}
これはCPUサイクルの無駄です。のすべてのコンテンツをループしますRead
。次に、のすべてのコンテンツをループしますParse
。/* parsing action */
メソッドのwhileループの下に配置することRead
もできますが、同じコードをあちこちにコピーしたくありません。
内容に対して1回の反復でファイルを解析し、解析と読み取りに別々のメソッドを使用するにはどうすればよいですか?
C#では、ある種のyield returnが存在することは理解していますが、Javaにロックされています。
Javaでの私のオプションは何ですか?