好的,我知道这是一个非常新秀的问题,但我在网上浏览了很多,但我无法找到问题的答案:
如何在java中逐行读取文件中的输入?
假设每行都有整数的文件输入,例如:
1
2
3
4
5
以下是我尝试使用的代码片段:
public static void main(File fromFile) {
BufferedReader reader = new BufferedReader(new FileReader(fromFile));
int x, y;
//initialize
x = Integer.parseInt(reader.readLine().trim());
y = Integer.parseInt(reader.readLine().trim());
}
据推测,这将读取前两行并将它们存储为x和y中的整数。因此,在示例中,x = 1,y = 2。
这是一个问题,我不知道为什么。
答案 0 :(得分:2)
请检查您的main method()
。它应该像这些
public static void main(String... args) {
}
或
public static void main(String[] args) {
}
然后阅读:
BufferedReader reader = new BufferedReader(new FileReader(fromFile));
String line;
while( (line = reader.readLine()) != null){
int i = Integer.parseInt(line);
}
答案 1 :(得分:2)
public static void main(String[] args) {
FileInputStream fstream;
DataInputStream in = null;
try {
// Open the file that is the first
// command line parameter
fstream = new FileInputStream("textfile.txt");
// Get the object of DataInputStream
in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
int x = Integer.parseInt(br.readLine());
int y = Integer.parseInt(br.readLine());
//Close the input stream
} catch (Exception e) {//Catch exception if any
System.err.println("Error: " + e.getMessage());
} finally {
try {
in.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
答案 2 :(得分:0)
我们通常使用while循环,readLine
方法告诉是否到达文件末尾:
List<String> lines = new ArrayList<String>();
while ((String line = reader.readLine()) != null)
lines.add(line);
现在我们有一个集合(列表),它将文件中的所有行都保存为单独的字符串。
要将内容读作整数,只需定义一个整数集合并在阅读时解析:
List<Integer> lines = new ArrayList<Integer>();
while ((String line = reader.readLine()) != null) {
try {
lines.add(Integer.parseInt(line.trim()));
} catch (NumberFormatException eaten) {
// this happens if the content is not parseable (empty line, text, ..)
// we simply ignore those lines
}
}