-3

我有一个这样的文本文件:

Item 1
Item 2
Item 3

我需要能够将每个“Item X”读入一个字符串,并理想地将所有字符串存储为一个向量/ArrayList。

我试过了:

InputStream is = new FileInputStream("file.txt");
is.read(); //looped for every line of text

但这似乎只处理整数。

谢谢

4

5 回答 5

4

您应该使用 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 或更高版本。

于 2013-06-21T19:21:44.907 回答
4

您在这里有几个答案,对我们来说最简单的是扫描仪(在 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);
}

然而,扫描仪通常更容易使用。

于 2013-06-21T19:24:06.517 回答
2

您可以使用 Java 7 的Files#readAllLines. 一个简短的单行代码,不需要导入第 3 方库:)

List<String> lines = 
       Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8);
于 2013-06-21T19:24:23.183 回答
1
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();
    }
于 2013-06-21T19:24:16.863 回答
0
Scanner scan = new Scanner(new FileInputStream("file.txt"));
scan.nextLine();
于 2013-06-21T19:23:51.063 回答