我有一个简单的输出文本文件,名为logOutput.txt
:
2
3
4
我希望我的Java程序能够在文件中提供最新的程序(4)。这是我的代码:
import java.util.*;
import java.io.*;
public class readLogFile {
public static void main(String[] a) {
int logNumber = 0;
try {
File file = new File("logOutput.txt");
Scanner input = new Scanner(file);
while (input.hasNext()) {
logNumber = input.nextInt();
}
System.out.println("the log # is: " + logNumber);
} catch (FileNotFoundException fne) {
}
}
}// end class
我关心的主要是关于while循环。有没有更有效的方法?在这里,我将每行读入变量,然后重写。我在想 - 可能要检查nextInt
何时为空?
谢谢
答案 0 :(得分:2)
您可以使用Integer.parse()
在你的while循环中:
String s = input.nextLine();
try{
int i = Integer.parseInt(s);
logNumber = i;
} catch(NumberFormatException ex) {
System.out.println("It is not an int");
}
如果该行不是整数或null,则抛出异常。
答案 1 :(得分:1)
因此,至少有两种方法可以读取与此相关的文件。
第二种方式对内存的效率更高,因为你只记录了你可以在任何时候处理的内存。通过他们在这里做的方式,你有一个真正的,非常长的线(如果他们从未打'输入'怎么办?)的单一失败案例,但除此之外,这是安全的......将工作分成机器可以随时装入RAM的东西。
是的,你会多次覆盖这个值,但是每次输入只会一次,所以它不能成为指数级别的错误,并将内容写入RAM很便宜这很可能和它一样有效;调整这个的唯一原因是如果你处理非常非常大的输入集。