Мне нужно построчно прочитать большой текстовый файл размером около 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 ();}