Подсчёт количества строк в текстовом файле
Во многих редакторах при работе с текстовым документом вы можете видеть, сколько всего строк содержится в этом файле. Строки между собой разделяются символом перевода строки, который в каждой операционной системе (Windows, Unix, Mac) свой.
Давайте разберёмся, как быстро подсчитать количество строк в текстовом файле независимо от той ОС, в котором выполняется наш код. Более того, текстовый файл может быть сколь угодно большим, поэтому мы будем использовать буферизацию потока, чтобы не израсходовать всю доступную оперативную память.
Предположим, наш метод принимает на вход абсолютный путь до целевого файла, а возвращает количество строк в виде целочисленного типа long. Рассмотрим две реализации.
Вариант c LineNumberReader
public static long getLineCountByReader(String fileName) throws IOException <
try ( var lnr = new LineNumberReader( new BufferedReader( new FileReader(fileName)))) <
while (lnr.readLine() != null ) ;
return lnr.getLineNumber();
>
>
Сначала мы в конструкции try-with-resources последовательно создаём три Reader’a, оборачивая один в другой:
- FileReader – для работы с файлом.
- BufferedReader – для буферизации потока и ускорения обработки.
- LineNumberReader – собственно, для подсчёта количества строк.
Все перечисленные ридеры являются ресурсами и конструкция try-with-resources гарантирует нам, что после выхода из этого блока они все будут закрыты.
Затем в цикле вызываем у LineNumberReader метод readLine(). Поскольку никаких дополнительных действий нам делать не надо, то тело цикла будет пустым. После выхода из цикла метод getLineNumber() возвращает нам количество строк в файле.
На мой взгляд, это наиболее «читаемая» реализация, но ниже мы рассмотрим чуть более быструю версию. А пока можем вызвать наш метод:
public static void main(String[] args) throws IOException <
System.out.println( «Lines count: » + getLineCountByReader( «/home/user/very-large-file.txt» ));
>
Даже для текстового файла на десятки мегабайт подсчёт количества строк занимает меньше секунды.
Вариант c инкрементом
Наш метод можно немного ускорить, отказавшись от LineNumberReader. Вместо этого будем подсчитывать строки с помощью обычного инкремента.
public static long getLineCountByIncrement(String fileName) throws IOException <
var lines = 0L ;
try ( var reader = new BufferedReader( new FileReader(fileName))) <
while (reader.readLine() != null ) <
lines++;
>
return lines;
>
>
Здесь мы точно так же в блоке try создаём FileReader и BufferedReader, чтобы по окончании они были гарантированно закрыты. После этого в цикле на каждой итерации также вызываем метод readLine(). На этот раз тело цикла у нас не пустое, в нём мы увеличиваем переменную lines на 1. Такая реализация быстрее предыдущей примерно на 10%.
Как определить количество слов в строке в Java
Напишите программу HowMany.java, которая определит, сколько слов Вы ввели с консоли.
Решение:
import java . util . Scanner ;
public class HowMany <
public static void main ( String [ ] args ) <
Scanner sc = new Scanner ( System . in ) ;
//Вводим предложение в консоль
System . out . println ( "Введите слова одной строкой через пробел" ) ;
String input = sc . nextLine ( ) ;
//Начальное количество слов равно 0
int count = 0 ;
//Если ввели хотя бы одно слово, тогда считать, иначе конец программы
if ( input . length ( ) ! = 0 ) <
//Проверяем каждый символ, не пробел ли это
for ( int i = 0 ; i < input . length ( ) ; i ++ ) <
if ( input . charAt ( i ) == ' ' ) <
//Если пробел - увеличиваем количество слов на 1
System . out . println ( "Вы ввели " + count + "слов" ) ;
Надеемся — наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.
- ← Раздача карт в покере в Java
- Транспонирование матрицы в Java →
Как посчитать количество строк в java
Чтобы посчитать количество строк в файле с помощью Java , можно использовать следующий код:
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main public static void main(String[] args) String filePath = "path/to/file.txt"; // путь к файлу int count = 0; // счетчик строк try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) String line; while ((line = reader.readLine()) != null) count++; > System.out.println("Количество строк в файле: " + count); > catch (IOException e) System.err.println("Ошибка при чтении файла: " + e.getMessage()); > > >
- В этом коде мы открываем файл с помощью класса FileReader и оборачиваем его в BufferedReader , чтобы читать файл построчно.
- Затем мы итерируемся по каждой строке в файле и увеличиваем счетчик строк count .
- После завершения итерации мы выводим общее количество строк в файле.
Обратите внимание, что мы используем конструкцию try-with-resources для автоматического закрытия BufferedReader после чтения файла. Это обеспечивает правильное освобождение ресурсов и уменьшает вероятность утечки памяти.
Подсчет количества строк в текстовом файле с помощью Java
Как подсчитать количество строк в текстовом файле с помощью Java:
- Создайте экземпляр класса FileInputStream, передав объект требуемого файла в качестве параметра его конструктору.
- Считайте содержимое файла в байтовый массив, используя метод read() класса FileInputStream.
- Создайте класса String путем передачи полученного байтового массива в качестве параметра его конструктору.
- Теперь разделите указанную строку на массив строк, используя метод split(), передав регулярное выражение новой строки в качестве параметра этому методу.
- Теперь найдите длину полученного массива.
Пример
import java.io.File; import java.io.FileInputStream; public class NumberOfCharacters < public static void main(String args[]) throws Exception< File file = new File("data"); FileInputStream fis = new FileInputStream(file); byte[] byteArray = new byte[(int)file.length()]; fis.read(byteArray); String data = new String(byteArray); String[] stringArray = data.split("\r\n"); System.out.println("Number of lines in the file are ::"+stringArray.length); >>
Итог
Number of lines in the file are ::3
Средняя оценка 5 / 5. Количество голосов: 2
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
