用Java读取纯文本文件

看起来有不同的方法来读取和写入Java文件的数据。

我想从文件中读取ASCII数据。 什么是可能的方式和它们的区别?


ASCII是一个TEXT文件,因此您可以使用读者进行阅读。 Java也支持使用InputStreams读取二进制文件。 如果正在读取的文件很大,那么您会希望在FileReader上使用BufferedReader来提高读取性能。

阅读这篇关于如何使用Reader的文章

我还建议你下载并阅读这本叫做Thinking In Java的精彩(但免费)书

在Java 7中

新的字符串(Files.readAllBytes(...))或Files.readAllLines(...)

在Java 8中

Files.lines(..)的forEach(...)


我最喜欢读取小文件的方法是使用BufferedReader和StringBuilder。 这非常简单并且重要(尽管不是特别有效,但对于大多数情况来说足够好):

BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
} finally {
    br.close();
}

有人指出,在Java 7之后,您应该使用try-with-resources(即自动关闭)功能:

try(BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
    StringBuilder sb = new StringBuilder();
    String line = br.readLine();

    while (line != null) {
        sb.append(line);
        sb.append(System.lineSeparator());
        line = br.readLine();
    }
    String everything = sb.toString();
}

当我读取像这样的字符串时,我通常希望每行都处理一些字符串处理,然后我去执行这个操作。

尽管如果我只想将文件读入字符串,我总是使用Apache Commons IO和IOUtils.toString()方法。 您可以在这里查看源代码:

http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html

FileInputStream inputStream = new FileInputStream("foo.txt");
try {
    String everything = IOUtils.toString(inputStream);
} finally {
    inputStream.close();
}

Java 7更简单:

try(FileInputStream inputStream = new FileInputStream("foo.txt")) {     
    String everything = IOUtils.toString(inputStream);
    // do something with everything string
}

最简单的方法是使用Java中的Scanner类和FileReader对象。 简单的例子:

Scanner in = new Scanner(new FileReader("filename.txt"));

Scanner有几种读取字符串,数字等的方法......您可以在Java文档页面上查找有关此方面的更多信息。

例如将整个内容读入String

StringBuilder sb = new StringBuilder();
while(in.hasNext()) {
    sb.append(in.next());
}
in.close();
outString = sb.toString();

此外,如果你需要一个特定的编码,你可以使用它来代替FileReader

new InputStreamReader(new FileInputStream(fileUtf8), StandardCharsets.UTF_8)
链接地址: http://www.djcxy.com/p/19879.html

上一篇: Reading a plain text file in Java

下一篇: Easiest way to convert a List to a Set in Java