Ответ 1
Сканер:
for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext(); ) {
String line = sc.nextLine();
... // do something with line
}
Мне интересна простая обработка строк.
Сканер:
for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext(); ) {
String line = sc.nextLine();
... // do something with line
}
Взгляните на класс Scanner.
Он добавлен в Java 5, чтобы сделать строки и файлы чтения намного проще, чем старые цепочки FileReaders и FileInputStream (не более new BufferedReader(new FileReader())
, чтобы перейти к методу readLine
).
В классе Scanner вы можете использовать метод nextLine
для чтения строки за раз, но в ней также есть много методов использования для поиска примитивов и регулярных выражений в файле.
Вы можете использовать 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();
}
Если вы готовы использовать сторонние библиотеки, тогда классы полезности, такие как Files
из Guava или 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 в Java-проекте сегодня, IMO будет глупым.:-)
По общему признанию, JDK теперь предоставляет несколько адекватных инструментов (Сканер) для этой конкретной цели; использование сторонней библиотеки для чтения файлов было более оправданным, если что-то вроде этого было альтернативой.
Для начала всегда полезно использовать Apache.
Вы можете попробовать apache FileUtils. такие методы, как
for(String line: FileUtils.readLines(file)) {
System.out.println(line);
}
Вы также можете использовать InputStreamReader (который вы создаете с помощью InputStream, например FileInputStream), завернутый в BufferedReader, для простого чтения строки файла.