Какие самые лучшие / самые простые классы используются для чтения файлов в Java? - PullRequest
7 голосов
/ 05 февраля 2011

Меня интересует простая обработка строк.

Ответы [ 7 ]

7 голосов
/ 05 февраля 2011

Сканер:

for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext(); ) {
  String line = sc.nextLine();
  ... // do something with line
}
7 голосов
/ 05 февраля 2011

Взгляните на Сканер класс.

Это было добавлено в Java 5, чтобы сделать чтение строк и файлов намного проще, чем старые цепочки FileReaders и FileInputStream (не более new BufferedReader(new FileReader()) только для того, чтобы перейти к методу readLine).

В классе Scanner вы можете использовать метод nextLine для чтения строки за раз, но он также имеет множество утилит для поиска примитивов и регулярных выражений в файле.

4 голосов
/ 05 февраля 2011

Вы можете использовать BufferedReader, что-то вроде этого: -

try {
    BufferedReader input = new BufferedReader(new FileReader(new File("c:\\test.txt")));
    try {
        String line = null;
        while ((line = input.readLine()) != null) {
            System.out.println(line);
        }
    } finally {
        input.close();
    }
} catch (IOException ex) {
    ex.printStackTrace();
}
2 голосов
/ 05 февраля 2011

Если вы хотите использовать сторонние библиотеки , то такие вспомогательные классы, как Files из Гуава или FileUtils из Apache Commons IO делает чтение файлов очень простым.

Примеры ниже (где File file = new File("path/to/file.txt")) чтения всех строк текстового файла в список и чтения всего файла в строку.

Гуава:

List<String> lines = Files.readLines(file, Charsets.UTF_8);

String contents = Files.toString(file, Charsets.UTF_8);

Apache Commons IO:

List<String> lines = FileUtils.readLines(file, "UTF-8");

String contents = FileUtils.readFileToString(file, "UTF-8")

Моя рекомендация (по состоянию на 2013 год): Guava , которая является современной, чистой, активно поддерживаемой библиотекой.Как правило, он более высокого качества, чем материал Apache Commons.

Конечно, добавлять Guava только для этого не имеет смысла, так как это относительно большая библиотека.С другой стороны, не с использованием Guava в Java-проекте сегодня было бы глупо для IMO.:-)

По общему признанию, JDK теперь предоставляет несколько адекватных инструментов ( Scanner ) для этой конкретной цели;использование сторонней библиотеки для чтения файлов было более оправданным, когда что-то вроде этого было альтернативой.

1 голос
/ 05 февраля 2011

Вы можете попробовать apache FileUtils.такие методы, как

for(String line: FileUtils.readLines(file)) {
   System.out.println(line);
}
1 голос
/ 05 февраля 2011

Apache commons - это всегда хорошее место для старта.

См. http://commons.apache.org/io/

0 голосов
/ 05 февраля 2011

Вы также можете использовать InputStreamReader (который вы создаете с использованием InputStream, например FileInputStream), обернутый в BufferedReader, для простого чтения строки файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...