从Java中的文本文件中读取

时间:2013-06-21 19:20:36

标签: java text io

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

Item 1
Item 2
Item 3

我需要能够将每个“Item X”读成一个字符串,理想情况下将所有字符串存储为vector / ArrayList。

我试过了:

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

但似乎只处理整数。

谢谢

5 个答案:

答案 0 :(得分: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或更高版本。

答案 1 :(得分: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);
}

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

答案 2 :(得分:2)

您可以使用Java 7的Files#readAllLines。需要进行简短的单行和无第三方库导入:)

List<String> lines = 
       Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8);

答案 3 :(得分: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();
    }

答案 4 :(得分:0)

Scanner scan = new Scanner(new FileInputStream("file.txt"));
scan.nextLine();