Java 8 - 如何在 java 中逐行读取文件?
Java 8 - How to read file line by line in java?
我看到有人问过这类问题,但他们似乎没有回答我的问题。 :(
我有一个文本文件 "file.txt" 其内容类似于这样
abcd
efgh
ijkl
现在我想要那个,不同类型的行在我的程序中由不同的字符串变量存储
例如
String firstLine , String secondLine , ThiredLine;
当我在字符串上方打印时,输出将是
firstLine :: abcd & secondLine :: efgh & thiredLine :: ijkl
是否可以使用 readLine() 方法或任何其他方法来实现?
提前致谢:)
如果你真的想那样做,你可以这样写你的代码:
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());
}
您可以参考 java.nio.file.Path
和 java.nio.file.Files
class java api.
你可以得到问题的答案。
第一步你应该通过文件路径获取 Path 对象。
第二步你可以通过Files.readAllLines(Path路径)方法逐行读取内容。
下面的例子:
Path path = FileSystems.getDefault().getPath(filePath);
List<String> datas = Files.readAllLines(path)
您采用的方法似乎有点粗糙。还有许多其他方法可以做到这一点。许多其他人已经提交了答案,但这里有一个替代答案。
另请注意,从 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());
}
我看到有人问过这类问题,但他们似乎没有回答我的问题。 :(
我有一个文本文件 "file.txt" 其内容类似于这样
abcd
efgh
ijkl
现在我想要那个,不同类型的行在我的程序中由不同的字符串变量存储
例如
String firstLine , String secondLine , ThiredLine;
当我在字符串上方打印时,输出将是
firstLine :: abcd & secondLine :: efgh & thiredLine :: ijkl
是否可以使用 readLine() 方法或任何其他方法来实现?
提前致谢:)
如果你真的想那样做,你可以这样写你的代码:
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());
}
您可以参考 java.nio.file.Path
和 java.nio.file.Files
class java api.
你可以得到问题的答案。
第一步你应该通过文件路径获取 Path 对象。
第二步你可以通过Files.readAllLines(Path路径)方法逐行读取内容。
下面的例子:
Path path = FileSystems.getDefault().getPath(filePath);
List<String> datas = Files.readAllLines(path)
您采用的方法似乎有点粗糙。还有许多其他方法可以做到这一点。许多其他人已经提交了答案,但这里有一个替代答案。
另请注意,从 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());
}