我已经看到这类问题,但他们似乎没有回答我的问题。 :(
我有一个文本文件“file.txt”,其内容类似于此
ABCD
EFGH
IJKL
现在我想要的是,我的程序中不同的String变量存储的不同类型的行 例如
String firstLine , String secondLine , ThiredLine;
当我在字符串上方打印时,输出将是
firstLine :: abcd & secondLine :: efgh & thiredLine :: ijkl
可以使用 readLine()方法或其他任何方法吗?
提前致谢:)
答案 0 :(得分:2)
如果你真的想这样做,你可以编写这样的代码:
Scanner sc = new Scanner("file.txt");
String firstLine = sc.nextLine();
String secondLine = sc.nextLine();
String thirdLine = sc.nextLine();
但是,使用数组和for
循环会更方便:
Scanner sc = new Scanner("file.txt");
String[] lines = new String[3];
for (int i=0; i<lines.length; i++) {
lines[i] = sc.nextLine();
}
或者,您可以使用ArrayList
和while
循环。这样做的好处是,无论文件中的行数如何,此代码都将起作用:
Scanner sc = new Scanner("file.txt");
ArrayList<Sting> lines = new ArrayList<>();
while (sc.hasNextLine()) {
lines.add(sc.nextLine());
}
答案 1 :(得分:2)
您可以在java api中引用java.nio.file.Path
和java.nio.file.Files
类
你可以得到关于这个问题的答案
第一步,您应该通过文件路径获取Path对象
第二步,您可以通过Files.readAllLines(路径路径)方法逐行读取内容。
下面的例子:
Path path = FileSystems.getDefault().getPath(filePath);
List<String> datas = Files.readAllLines(path)
答案 2 :(得分:0)
你正在采取的方法似乎有点粗糙。还有很多其他方法可以做到这一点。许多其他人提交了答案,但这是另一种答案。
另请注意,从Java 7开始,现在可以对实现AutoCloseable接口的类进行自动资源管理。
话虽如此,这是一种做法。
String[] lines = new String[11]; //11 players
try (BufferedReader reader = new BufferedReader(new FileReader("file path here"))) {
String line = null;
int index = 0;
while ((line = reader.readLine()) != null) {
lines[index++] = line;
}
} catch (IOException e) {
System.out.println(e.getMessage());
}