Как я могу построчно читать большой текстовый файл с помощью Java?

Мне нужно построчно прочитать большой текстовый файл размером около 5-6 ГБ, используя Java.

Как я могу сделать это быстро?


Распространенным шаблоном является использование

  try (BufferedReader br = new BufferedReader (new FileReader  (файл))) {Строка строки;  while ((line = br.readLine ())! = null) {//обрабатываем строку.  }}  

Вы можете читать данные быстрее, если предположите, что кодировка символов отсутствует. например ASCII-7, но это не будет иметь большого значения. Весьма вероятно, что то, что вы сделаете с данными, займет намного больше времени.

EDIT: менее распространенный шаблон для использования, который позволяет избежать утечки line .

  try (BufferedReader br = new BufferedReader (новый FileReader (файл))) {for (String line; (line = br.readLine ())! = null;) { //обрабатываем строку.  }//строка здесь не видна.}  

ОБНОВЛЕНИЕ: в Java 8 вы можете сделать

   попробуйте (Stream  stream = Files.lines (Paths.get (fileName))) {stream.forEach (System.out :: println);}  

ПРИМЕЧАНИЕ. Вы необходимо поместить Stream в блок try-with-resource, чтобы гарантировать, что для него вызывается метод #close, в противном случае базовый дескриптор файла никогда не будет закрыт, пока GC не сделает это намного позже.


Распространенным шаблоном является использование

  try (BufferedReader br = new BufferedReader (new FileReader (  файл))) {Строка строки;  while ((line = br.readLine ())! = null) {//обрабатываем строку.  }}  

Вы можете читать данные быстрее, если предположите, что кодировка символов отсутствует. например ASCII-7, но это не будет иметь большого значения. Весьма вероятно, что то, что вы сделаете с данными, займет намного больше времени.

EDIT: менее распространенный шаблон для использования, который позволяет избежать утечки line .

  try (BufferedReader br = new BufferedReader (новый FileReader (файл))) {for (String line; (line = br.readLine ())! = null;) { //обрабатываем строку.  }//строка здесь не видна.}  

ОБНОВЛЕНИЕ: в Java 8 вы можете сделать

   попробуйте (Stream  stream = Files.lines (Paths.get (fileName))) {stream.forEach (System.out :: println);}  

ПРИМЕЧАНИЕ. Вы необходимо поместить Stream в блок try-with-resource, чтобы гарантировать, что для него вызывается метод #close, в противном случае базовый дескриптор файла никогда не будет закрыт, пока GC не сделает это намного позже.


Посмотрите этот блог:

  • Java Read File Line by Line — Java Tutorial

Можно указать размер буфера или использовать размер по умолчанию. Значение по умолчанию достаточно велико для большинства целей.

 //Откройте файл FileInputStream fstream = new FileInputStream ("textfile.txt"); BufferedReader br = new BufferedReader (  new InputStreamReader (fstream)); String strLine;//Считываем строку файла по строкеhile ((strLine = br. readLine ())! = null) {//Распечатываем содержимое на консоли System.out.println (strLine);}//Закрываем входной поток fstream.close ();  


Посмотрите этот блог:

  • Java Read File Line by Line — Java Tutorial

Можно указать размер буфера или использовать размер по умолчанию. Значение по умолчанию достаточно велико для большинства целей.

 //Откройте файл FileInputStream fstream = new FileInputStream ("textfile.txt"); BufferedReader br = new BufferedReader (  new InputStreamReader (fstream)); String strLine;//Считываем строку файла по строке ((strLine = br.readLine ())! = null) {//Распечатываем содержимое на консоли System.out.println (strLine);} //Закрываем входной поток streamfstream.close ();  

После выхода Java 8 ( Март 2014 г.) вы сможете использовать потоки:

  try (Stream  lines = Files.lines (Paths.get (filename), Charset.defaultCharset ()  )) {lines.forEachOrdered (line -> process (line));}  

Печать всех строк в файле:

  try (Stream  lines = Files.lines (file, Charset.defaultCharset ())) {lines.forEachOrdered (System.out :: println);}  


После выхода Java 8 (март 2014 г.) вы сможете использовать потоки:

  попробуйте (Stream  lines = Files.lines (  Paths.get (filename), Charset.defaultCharset ())) {lines.forEachOrdered (line -> process (line));}  

Печать всех строк в файле:

  try (Stream  lines = Files.lines (file, Charset.defaultCharset ())) {lines.forEachOrdered (System.out :: println);}  

Вот пример с полной обработкой ошибок и поддержкой спецификации кодировки для pre-Java 7. В Java 7 вы можете использовать синтаксис try-with-resources, который делает код чище.

Если вам просто нужна кодировка по умолчанию, вы можете пропустить InputStream и использовать FileReader.

  InputStream ins = null; //необработанный byte-streamReader r = null; //приготовленный readerBufferedReader br = null; //буферизуется для readLine () try {String s;  ins = новый FileInputStream ("textfile.txt");  r = новый InputStreamReader (ins, «UTF-8»); //оставим кодировку по умолчанию br = new BufferedReader (r);  в то время как ((s = br.readLine ())! = null) {System.out.println (s);  }} catch (исключение e) {System.err.println (e.getMessage ()); //обрабатываем исключение} finally {if (br! = null) {try {br.close ();  } catch (Throwable t) {/* убедитесь, что закрытие происходит */}} if (r! = null) {try {r.close ();  } catch (Throwable t) {/* убедиться, что закрытие происходит */}} if (ins! = null) {try {ins. близко();  } catch (Throwable t) {/* убедитесь, что закрытие происходит */}}}  

Вот версия Groovy с полной обработкой ошибок:

   Файл f = новый файл ("textfile.txt"); f.withReader ("UTF-8") {br -> br.eachLine {line -> println line;  }}  


Вот пример с полной обработкой ошибок и поддерживающей спецификацией кодировки для pre -Java 7. В Java 7 вы можете использовать синтаксис try-with-resources, что делает код чище.

Если вам просто нужна кодировка по умолчанию, вы можете пропустить InputStream и использовать FileReader.

  InputStream ins = null; //необработанный byte-streamReader r = null; //приготовленный readerBufferedReader br = null; //буферизуется для readLine () try {String s;  ins = новый FileInputStream ("textfile.txt");  r = новый InputStreamReader (ins, «UTF-8»); //оставим кодировку по умолчанию br = new BufferedReader (r);  в то время как ((s = br.readLine ())! = null) {System.out.println (s);  }} catch (исключение e) {System.err.println (e.getMessage ()); //обрабатываем исключение} finally {if (br! = null) {try {br.close ();  } catch (Throwable t) {/* убедитесь, что закрытие происходит */}} if (r! = null) {try {r.close ();  } catch (Throwable t) {/* убедитесь, что закрытие происходит */}} if (ins! = null) {try {ins.close ();  } catch (Throwable t) {/* убедитесь, что закрытие происходит */}}}  

Вот версия Groovy с полной обработкой ошибок:

   Файл f = новый файл ("textfile.txt"); f.withReader ("UTF-8") {br -> br.eachLine {line -> println line;  }}  

Я задокументировал и протестировал 10 различных способов чтения файла на Java, а затем запускали их друг против друга, заставляя их читать в тестовых файлах от 1 КБ до 1 ГБ. Вот 3 самых быстрых метода чтения файла для чтения тестового файла размером 1 ГБ.

Обратите внимание, что при запуске тестов производительности я ничего не выводил на консоль, так как это действительно замедлило бы выполнение теста. Я просто хотел проверить чистую скорость чтения.

1) java.nio.file.Files.readAllBytes ()

Протестировано на Java 7, 8, 9. В целом это был самый быстрый метод. Чтение файла размером 1 ГБ постоянно длилось менее 1 секунды.

  import java.io..File; import java.io.IOException; import java.nio.file.Files; public  class ReadFile_Files_ReadAllBytes {public static void main (String [] pArgs) выдает исключение IOException {String fileName = "c: \ temp \ sample-1GB.txt";  Файл файл = новый файл (имя_файла);  byte [] fileBytes = Files.readAllBytes (file.toPath ());  char singleChar;  для (байт b: fileBytes) {singleChar = (char) b;  System.out.print (singleChar);  }}}  

2) java.nio.file.Files.lines ()

Это было успешно протестировано в Java 8 и 9, но победило не работает в Java 7 из-за отсутствия поддержки лямбда-выражений. Прошло около 3. 5 секунд на чтение файла размером 1 ГБ, что ставит его на второе место по сравнению с чтением файлов большего размера.

  import java.io.File; import java.io.IOException; import  java.nio.file.Files; import java.util.stream.Stream; открытый класс ReadFile_Files_Lines {public static void main (String [] pArgs) выдает исключение IOException {String fileName = "c: \ temp \ sample-1GB.txt  ";  Файл файл = новый файл (имя_файла);  попробуйте (Stream linesStream = Files.lines (file.toPath ())) {linesStream.forEach (line -> {System.out.println (line);});  }}}  

3) BufferedReader

Протестировано для работы в Java 7, 8, 9. Это заняло около 4,5 секунд, чтобы прочитать в тесте 1 ГБ файл.

  import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; открытый класс ReadFile_BufferedReader_ReadLine {public static void main (String [] args  ) выбрасывает IOException {String fileName = "c: \ temp \ sample-1GB.txt";  FileReader fileReader = новый FileReader (имя_файла);  попробуйте (BufferedReader bufferedReader = new BufferedReader (fileReader)) {Строка строки;  while ((line = bufferedReader.readLine ())! = null) {System.out.println (строка);  }}}  

Здесь вы можете найти полные рейтинги для всех 10 методов чтения файлов.


Я задокументировал и протестировал 10 различных способов чтения файла на Java, а затем сравнил их друг с другом, заставив их читать в тестовых файлах размером от 1 КБ до 1 ГБ. Вот 3 самых быстрых метода чтения файла для чтения тестового файла размером 1 ГБ.

Обратите внимание, что при запуске тестов производительности я ничего не выводил на консоль, так как это действительно замедлило бы выполнение теста. Я просто хотел проверить чистую скорость чтения.

1) java.nio.file.Files.readAllBytes ()

Протестировано на Java 7, 8, 9. В целом это был самый быстрый метод. Чтение файла размером 1 ГБ постоянно длилось менее 1 секунды.

  import java.io..File; import java.io.IOException; import java.nio.file.Files; public  class ReadFile_Files_ReadAllBytes {public static void main (String [] pArgs) выдает исключение IOException {String fileName = "c: \ temp \ sample-1GB.txt";  Файл файл = новый файл (имя_файла);  byte [] fileBytes = Files.readAllBytes (file.toPath ());  char singleChar;  для (байт b: fileBytes) {singleChar = (char) b;  System.out.print (singleChar);  }}}  

2) java.nio.file.Files.lines ()

Это было успешно протестировано в Java 8 и 9, но победило не работает в Java 7 из-за отсутствия поддержки лямбда-выражений. Для чтения файла размером 1 ГБ потребовалось около 3,5 секунд, что поставило его на второе место по сравнению с чтением файлов большего размера.

  import java.io.File; import java.io.  IOException; import java.nio.file.Files; import java.util.stream.Stream; открытый класс ReadFile_Files_Lines {public static void main (String [] pArgs) выдает исключение IOException {String fileName = "c: \ temp \ sample-  1GB.txt ";  Файл файл = новый файл (имя_файла);  попробуйте (Stream linesStream = Files. строки (file.toPath ())) {linesStream.forEach (строка -> {System.out.println (строка);});  }}}  

3) BufferedReader

Протестировано для работы в Java 7, 8, 9. Это заняло около 4,5 секунд, чтобы прочитать в тесте 1 ГБ файл.

  import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; открытый класс ReadFile_BufferedReader_ReadLine {public static void main (String [] args  ) выбрасывает IOException {String fileName = "c: \ temp \ sample-1GB.txt";  FileReader fileReader = новый FileReader (имя_файла);  попробуйте (BufferedReader bufferedReader = new BufferedReader (fileReader)) {Строка строки;  while ((line = bufferedReader.readLine ())! = null) {System.out.println (строка);  }}}  

Здесь вы можете найти полные рейтинги для всех 10 методов чтения файлов.


В Java 8 вы можете:

  попробовать (Stream  lines = Files.lines (file, StandardCharsets.UTF_8))  {for (String line: (Iterable ) lines :: iterator) {;  }}  

Некоторые примечания: поток, возвращаемый Files.lines (в отличие от большинства потоков), необходимо закрыть. По причинам, указанным здесь, я избегаю использования forEach () . Странный код (Iterable ) lines :: iterator преобразует Stream в Iterable.


В Java 8 вы можете:

  попробовать (Stream  lines = Files.lines (file, StandardCharsets.UTF_8))  {for (String line: (Iterable ) lines :: iterator) {;  }}  

Некоторые примечания: поток, возвращаемый Files.lines (в отличие от большинства потоков), необходимо закрыть. По причинам, указанным здесь, я избегаю использования forEach () . Странный код (Iterable ) lines :: iterator преобразует Stream в Iterable.


Что вы можете сделать, так это отсканировать весь текст с помощью Scanner и просмотреть текст построчно. Конечно, вы должны импортировать следующее:

   import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public static void readText выдает исключение FileNotFoundException {Scanner scan = new Scanner (новый файл ("samplefilename.txt"));  while (scan.hasNextLine ()) {Строка строки = scan.nextLine (); //Здесь вы можете манипулировать строкой как хотите}}  

Сканер в основном сканирует весь текст. Цикл while используется для обхода всего текста.

Функция .hasNextLine () — это логическое значение, которое возвращает истину, если в текст. Функция .nextLine () дает вам всю строку в виде String, которую вы затем можете использовать так, как хотите. Попробуйте System.out.println (line) , чтобы напечатать текст.

Боковое примечание: .txt — это текст типа файла.


Что вы можете сделать, так это отсканировать весь текст с помощью сканера и просмотреть текст построчно. Конечно, вы должны импортировать следующее:

  import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public static void readText выдает исключение FileNotFoundException {  Scanner scan = новый сканер (новый файл ("samplefilename.txt"));  while (scan.hasNextLine ()) {Строка строки = scan.nextLine (); //Здесь вы можете манипулировать строкой как хотите}}  

Сканер в основном сканирует весь текст. Цикл while используется для обхода всего текста.

Функция .hasNextLine () — это логическое значение, которое возвращает истину, если в текст. Функция .nextLine () дает вам всю строку в виде String, которую вы затем можете использовать так, как хотите. Попробуйте System.out.println (line) , чтобы напечатать текст.

Примечание: .txt — это текст типа файла.


FileReader не позволит вам указать кодировку, используйте вместо этого InputStreamReader , если вам нужно указать ее :

  попробуйте {BufferedReader br = new BufferedReader (новый InputStreamReader (новый FileInputStream (filePath), "Cp1252"));  Строка строки;  while ((line = br.readLine ())! = null) {//обрабатываем строку.  } br.close ();} catch (IOException e) {e.printStackTrace ();}  

Если вы импортировали этот файл из Windows, он может иметь кодировку ANSI (Cp1252) , поэтому вам нужно указать кодировку.


FileReader не позволит вам указать кодировку, используйте InputStreamReader вместо этого, если вам нужно указать это:

  попробуйте {BufferedReader br = new BufferedReader (новый InputStreamReader (новый FileInputStream (filePath), "Cp1252"));  Строка строки;  while ((line = br.readLine ())! = null) {//обрабатываем строку.  } br.close ();} catch (IOException e) {e.printStackTrace ();}  

Если вы импортировали этот файл из Windows, он может иметь кодировку ANSI (Cp1252) , поэтому вам нужно указать кодировку.


В Java 7:

  String folderPath =  «C:/folderOfMyFile»; Путь пути = Paths.get (folderPath, «myFileName.csv»); //или любой текстовый файл, например: txt, bat, etcCharset charset = Charset.forName ("UTF-8"); try (BufferedReader reader = Files.newBufferedReader (path, charset)) {while ((line = reader.readLine  ())! = null) {//разделяем все поля CSV в массив строк String [] lineVariables = line.split (",");  }} catch (IOException e) {System.err. println (e);}  


В Java 7:

  String folderPath = "C:/folderOfMyFile"; Путь к пути = Paths.get (folderPath, "myFileName.csv"); //или любой текстовый файл, например: txt, bat, etcCharset charset = Charset.forName ("UTF-8"); try (BufferedReader reader = Files.newBufferedReader (path, charset)) {while ((line = reader.readLine  ())! = null) {//разделяем все поля CSV в массив строк String [] lineVariables = line.split (",");  }} catch (IOException e) {System.err.println (e);}  

В Java 8 также есть альтернатива использованию Files.lines () . Если ваш источник ввода не файл, а что-то более абстрактное, например Reader или InputStream , вы можете stream строки с помощью метода BufferedReader s lines () .

Например:

   попробуйте (BufferedReader reader = new BufferedReader (...)) {reader.lines (). forEach (line -> processLine (line));}  

вызовет processLine () для каждой строки ввода, прочитанной BufferedReader .


В Java 8 также есть альтернатива использованию Files.lines () . Если ваш источник ввода не файл, а что-то более абстрактное, например Reader или InputStream , вы можете stream строки с помощью метода BufferedReader s lines () .

Например:

   попробуйте (BufferedReader reader = new BufferedReader (...)) {reader.lines (). forEach (line -> processLine (line));}  

вызовет processLine () для каждой строки ввода, прочитанной BufferedReader .


Для чтения файла с Java 8

  package com.java.java8; import java  .nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream;/** * Класс ReadLargeFile.  * * @author Ankit Sood 20 апреля 2017 г. */public class ReadLargeFile {/** * Основной метод.  * * @param args * аргументы */public static void main (String [] args) {попробуйте {Stream  stream = Files.lines (Paths.get ("C: \ Users \ System \ Desktop    demoData.txt "));  stream.forEach (System.out :: println);  } catch (Exception e) {//TODO Автоматически сгенерированный блок catch e.printStackTrace ();  }}}  


Для чтения файла с Java 8

  package com.java.java8; import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream  ;/** * Класс ReadLargeFile. * * @author Ankit Sood 20 апреля 2017 г. */public class ReadLargeFile {/** * Основной метод.  * * @param args * аргументы */public static void main (String [] args) {попробуйте {Stream  stream = Files.lines (Paths.get ("C: \ Users \ System \ Desktop    demoData.txt "));  stream.forEach (System.out :: println);  } catch (Exception e) {//TODO Автоматически сгенерированный блок catch e.printStackTrace ();  }}}  

Вы можете использовать класс сканера

   Сканер sc = new Scanner (файл); sc.nextLine ();  


Вы можете использовать класс Scanner

  Сканер sc = new Scanner (файл); sc.nextLine ();  

Вам необходимо использовать метод readLine () в классе BufferedReader . Создайте новый объект из этого класса и примените этот метод к нему и сохраните его в строке.

BufferReader Javadoc


Вам нужно использовать метод readLine () в классе BufferedReader . Создайте новый объект из этого класса и примените этот метод к нему и сохраните это в строку.

BufferReader Javadoc


Понятный способ для этого

Например:

Если у вас есть dataFile.txt в вашем текущем каталоге

  import java.io. *; import java.util.Scanner; import java.io.FileNotFoundException; открытый класс readByLine {public readByLine () выдает исключение FileNotFoundException {Scanner linReader = new Scanner (новый файл ("  dataFile.txt "));  while (linReader.hasNext ()) {String line = linReader.nextLine ();  System.out.println (строка);  } linReader.close ();  } public static void main (String args []) выбрасывает FileNotFoundException {new readByLine ();  }}  

Результат, как показано ниже,


Понятный способ добиться этого,

Например:

Если у вас есть dataFile.txt в вашем текущем каталоге

  import java.io. *; Import java.util.Scanner; import java.  io.FileNotFoundException; открытый класс readByLine {общедоступный readByLine () выбрасывает FileNotFoundException {Scanner linReader = new Scanner (new File ("dataFile.txt"));  while (linReader.hasNext ()) {String line = linReader.nextLine ();  System.out.println (строка);  } linReader.close ();  } public static void main (String args []) выбрасывает FileNotFoundException {new readByLine ();  }}  

Результат, как показано ниже,


Java 9: ​​

  попробуйте (Stream  stream = Files.lines (  Paths.get (имя_файла))) {stream.forEach (Система. out :: println);}  


Java 9: ​​

  try (Stream  stream = Files.lines (Paths.get (fileName))) {stream.forEach (System.out :: println);}  

  BufferedReader br; FileInputStream fin; попробуйте {fin = new FileInputStream (fileName);  br = новый BufferedReader (новый InputStreamReader (fin)); /* Путь pathToFile = Paths.get (fileName);  br = Files.newBufferedReader (pathToFile, StandardCharsets.US_ASCII); */String line = br.readLine ();  while (строка! = null) {String [] attributes = line.split (",");  Фильм фильм = createMovie (атрибуты);  movies.add (фильм);  line = br.readLine ();  } fin.close ();  br.close ();} catch (FileNotFoundException e) {System.out.println ("Ваше сообщение");} catch (IOException e) {System.out.println ("Ваше сообщение");}  

У меня работает. Надеюсь, это поможет и вам.


  BufferedReader br; FileInputStream fin; try {  fin = новый FileInputStream (имя_файла);  br = новый BufferedReader (новый InputStreamReader (fin)); /* Путь pathToFile = Paths.get (fileName);  br = Files.newBufferedReader (pathToFile, StandardCharsets.US_ASCII); */String line = br.readLine ();  while (строка! = null) {String [] attributes = line.split (",");  Фильм фильм = createMovie (атрибуты);  movies.add (фильм);  line = br.readLine ();  } fin.close ();  br.close ();} catch (FileNotFoundException e) {System.out.println ("Ваше сообщение");} catch (IOException e) {System.out.println ("Ваше сообщение");}  

У меня работает. Надеюсь, это поможет и вам.


Вы можете использовать потоки, чтобы сделать это более точно:

  Files.lines (Paths.get ("input.txt")). forEach (s -> stringBuffer.append (s);  


Для более точной работы вы можете использовать потоки:

  Files.lines (  Paths.get ("input.txt")). ForEach (s -> stringBuffer.append (s);  

Обычно я выполняю процедуру чтения просто:

  void readResource (источник InputStream) выдает исключение IOException {BufferedReader stream = null; try {stream = new BufferedReader (  new InputStreamReader (источник)); while (true) {String line = stream.readLine (); if (line == null) {break;}//технологическая строка System.out.println (line)}} finally {closeQuiet (  поток);}} static void closeQuiet (Closeable closeable) {if (closeable! = null) {try {closeable. близко();  } catch (IOException ignore) {}}}  


Обычно я выполняю процедуру чтения просто:

  void readResource (источник InputStream) выдает исключение IOException {BufferedReader stream = null;  попробуйте {поток = новый BufferedReader (новый InputStreamReader (источник));  в то время как (истина) {строка строки = stream.readLine ();  если (строка == ноль) {перерыв;  }//технологическая строка System.out.println (line)}} finally {closeQuiet (stream);  }} static void closeQuiet (Closeable closeable) {if (closeable! = null) {попробуйте {closeable.close ();  } catch (IOException ignore) {}}}  

Вы можете использовать этот код:

  import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class ReadTextFile {public static void main (  String [] args) генерирует исключение IOException {попробуйте {File f = new File ("src/com/data.txt");  BufferedReader b = новый BufferedReader (новый FileReader (f));  String readLine = "";  System.out.println («Чтение файла с помощью буферизованного чтения»);  в то время как ((readLine = b.readLine ())! = null) {System.out.println (readLine);  }} catch (IOException e) {e.printStackTrace ();  }}}  


Вы можете использовать этот код:

  import java  .io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; открытый класс ReadTextFile {public static void main (String [] args) выбрасывает IOException {try {File f = new File  ("SRC/com/data.txt");  BufferedReader b = новый BufferedReader (новый FileReader (f));  String readLine = "";  System.out.println («Чтение файла с помощью буферизованного чтения»);  в то время как ((readLine = b.readLine ())! = null) {System.out.println (readLine);  }} catch (IOException e) {e.printStackTrace ();  }}}  

Используя org .apache.commons.io , он обеспечил большую производительность, особенно в устаревшем коде, который использует Java 6 и ниже.

Java 7 имеет лучший API с меньшим количеством обработки исключений и другие полезные методы:

  LineIterator lineIterator = null; попробуйте {lineIterator = FileUtils.lineIterator (новый файл ("/home/username/m.log"), "windows-  1256 "); //Второй параметр необязательный while (lineIterator.hasNext ()) {String currentLine = lineIterator.next (); //Некоторая операция}} наконец {LineIterator.closeQuietly (lineIterator);}  

Maven

     commons-io   commons-io   2. 6    


Используя org.apache.commons.io , он обеспечил большую производительность, особенно в устаревшем коде, который использует Java 6 и ниже.

Java 7 имеет лучший API с меньшим количеством обработок исключений и более полезными методами:

  LineIterator lineIterator = null; попробуйте {lineIterator = FileUtils.lineIterator (new File ("/home/username/m.  журнал ")," windows-1256 "); //Второй параметр необязательный while (lineIterator.hasNext ()) {String currentLine = lineIterator.next (); //Некоторая операция}} наконец {LineIterator.closeQuietly (lineIterator);}  

Maven

     commons-io   commons-io   2.6    

Вы также можете использовать Apache Commons IO:

  File file = new File ("/home/user/file.txt"); попробуйте {List  lines = FileUtils.readLines (file);} catch (IOException e) {// TODO Автоматически сгенерированный блок перехвата e.printStackTrace ();}  


Вы также можете используйте Apache Commons IO:

  File file = new File ("/home/user/file.txt"); попробуйте {List  lines = FileUtils.readLines (file  );} catch (IOException e) {//TODO Автоматически сгенерированный блок catch e.printStackTrace ();}  

Оцените статью
techsly.ru
Добавить комментарий