Здравствуйте!
Приведу небольшой и интересный, на мой взгляд, пример, как изменилась жизнь простого крестьянина Java разработчика, на примере задачи чтения и печати строк из файла.
Многие из нас помнят
‘до Java 7’ мучения:
BufferedReader reader = null; try { reader = new BufferedReader( new InputStreamReader( new FileInputStream(FILE_NAME), Charset.forName("UTF-8"))); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { // log error } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { // log warning } } }
которые могли облегчить, разве что
Apache Commons IO
InputStreamReader in = null; try { in = new InputStreamReader(new FileInputStream(new File(FILE_NAME)), Charsets.UTF_8); LineIterator it = new LineIterator(in); while (it.hasNext()) { System.out.println(it.nextLine()); } } catch (IOException e) { // log error } finally { IOUtils.closeQuietly(in); }
или даже так:
LineIterator it = null; try { it = FileUtils.lineIterator(new File(FILE_NAME), "UTF-8"); while (it.hasNext()) { System.out.println(it.nextLine()); } } catch (IOException e) { // log error } finally { if (it != null) { it.close(); } }
Java 7
принесла automatic resource management (ARM), NIO.2 и StandardCharsets. Тепреь без подключения сторонних библиотек появилась возможность сделать:
try (BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream(FILE_NAME), StandardCharsets.UTF_8))){ String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { // log error }
или еще короче:
List<String> lines = Files.readAllLines(Paths.get(FILE_NAME), StandardCharsets.UTF_8); for(String line: lines){ System.out.println(line); }
И наконец
Java 8
со своим Stream API и Лямбда-выражениями позволила сделать это в одну строчку:
Files.lines(Paths.get(FILE_NAME), StandardCharsets.UTF_8).forEach(System.out::println);
Мораль: если у вас современная Java — надо делать хорошо, и не надо плохо.
Спасибо за внимание и успехов в кодировании!
ссылка на оригинал статьи http://habrahabr.ru/post/269667/
Добавить комментарий