我有一个3行的int文本,这些数据是我需要放入一些变量中的数据,我想像数组一样一个接一个地访问所有数据,我可以读取firt行,但不知道该怎么去下一行,我知道这是一个愚蠢的事情,但是我被阻止了
public void Load () throws IOException {
BufferedReader in = new BufferedReader(new FileReader("prova.txt"));
String inputLine = in.readLine();
String [] fields = inputLine.split(" "); // Splits at the space
int i=0;
while(inputLine!=null) {
System.out.println(fields[i]); //prints out name
i++;
}
}
我想访问任何行的单个int,任何提示吗?
答案 0 :(得分:3)
您可以使用来自Java8的Files.readAllLines()
从文件中获取所有行:
List<String> lines = Files.readAllLines(Paths.get("prova.txt"));
for (String line : lines) {
String[] split = line.split(" "));
// use element access by index to do what you want
}
如果您熟悉流api,也可以:
Files.lines(Paths.get("prova.txt"))
.flatMap(s -> Arrays.stream(s.split(" ")))
.forEach(System.out::println);
答案 1 :(得分:0)
使用Java NIO API。
Path myPath = Paths.get("prova.txt")
List<String> contents = Files.readAllLines(myPath)
for(String line : contents) {
System.out.println(line);
}
答案 2 :(得分:0)
您必须迭代两次:遍历文件中的各行(例如,使用Files.lines(...)
),然后遍历该行中的各字段(使用for
循环)。
像这样:
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
public class Snippet {
public static void main(String[] args) throws IOException {
new Snippet().Load();
}
public void Load() throws IOException {
Files.lines(new File("prova.txt").toPath()).forEach(line -> {
String[] fields = line.split("\\s"); // Splits at the space
for (String field : fields) {
System.out.println(field);
}
System.out.println();
});
}
}
HTH!
答案 3 :(得分:0)
您正在做的错误是您仅读取第一行并尝试通过不断增加 i 的值来打印第一行中的所有内容,结果将出现空指针异常。尝试过与您相同的方法。如果您有任何疑问,请告诉我。
public class Snippet {
public static void Load() throws IOException {
BufferedReader in = new BufferedReader(new FileReader("prova.txt"));
String inputLine = in.readLine();
// Splits at the space
while (inputLine != null) {
int i = 0;
String[] fields = inputLine.split(" ");
while (i < fields.length) {
System.out.println(fields[i]); // prints out name
i++;
}
inputLine = in.readLine();
}
}
}
我在这里正在阅读每行,根据空间将其拆分,并打印出第一行中的所有内容,然后在循环结束时读取下一行。