我有一个这样的文本文件:
Item 1
Item 2
Item 3
我需要能够将每个“Item X”读入一个字符串,并理想地将所有字符串存储为一个向量/ArrayList。
我试过了:
InputStream is = new FileInputStream("file.txt");
is.read(); //looped for every line of text
但这似乎只处理整数。
谢谢
您应该使用 FileUtils 来执行此操作。它有一个名为readLines的方法
public static List<String> readLines(File file, Charset encoding) throws IOException
将文件的内容逐行读取到字符串列表中。该文件始终处于关闭状态。
请参阅上面的@BackSlash 评论,了解您使用InputStream.read()
错误的方式。
@BackSlash 还提到您可以使用java.nio.file.Files#readAllLines但前提是您使用的是 Java 1.7 或更高版本。
您在这里有几个答案,对我们来说最简单的是扫描仪(在 java.util 中)。
它有几个方便的方法,比如 nextLine() 和 next() 和 nextInt(),所以你可以简单地执行以下操作:
Scanner scanner = new Scanner(new File("file.txt"));
List<String> text = new ArrayList<String>();
while (scanner.hasNextLine()) {
text.add(scanner.nextLine());
}
或者,您可以使用 BufferedReader(在 java.io 中):
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
List<String> text = new ArrayList<String>();
for (String line; (line = reader.readLine()) != null; ) {
text.add(line);
}
然而,扫描仪通常更容易使用。
您可以使用 Java 7 的Files#readAllLines
. 一个简短的单行代码,不需要导入第 3 方库:)
List<String> lines =
Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
String [] tmp ;
while (line != null) {
sb.append(line);
tmp = line.Split(" ");
line = br.readLine();
}
String everything = sb.toString();
} finally {
br.close();
}
Scanner scan = new Scanner(new FileInputStream("file.txt"));
scan.nextLine();