我有一个正在读取字符串的日志文件
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();
}
然后我有一个解析器迭代整个字符串一次
void parse () {
String con = read("log.txt");
for (int i = 0; i < con.length; i++) {
/* parsing action */
}
}
这极大地浪费了 CPU 周期。我循环遍历Read
. 然后我循环遍历Parse
. 我可以/* parsing action */
将 while 循环放在Read
方法中,它会被找到,但我不想到处复制相同的代码。
如何在一次迭代中解析文件的内容,并且仍然有单独的解析和读取方法?
在 C# 中,我知道有某种收益返回的东西,但我被 Java 锁定了。
我在 Java 中有哪些选择?