Этот проект представляет собой анализатор частоты символов на языке Java. Он читает входной текстовый файл, анализирует частоту появления буквенных символов (с учетом регистра) и экспортирует результаты в выходной файл. Если путь к входному файлу не указан или является недействительным, используется текстовый файл по умолчанию, расположенный по адресу src/main/resources/java_description.txt.
Класс FrequencyAnalyzer обрабатывает операции с входными и выходными файлами, а также выполняет анализ частоты символов в текстовых файлах.
-
static File getInputFileFromUser(Scanner scanner)-
Описание: Запрашивает у пользователя путь к файлу для анализа текста. Если пользователь вводит пустую строку, используется файл по умолчанию
src/main/resources/java_description.txt. -
Параметры:
Scanner scanner: ОбъектScannerдля считывания ввода пользователя.
-
Возвращает: Объект
File, представляющий входной файл пользователя. -
Исключения:
InputStreamClosedException: Генерируется, если поток вводаScannerнеожиданно закрыт.
-
-
static void exportAnalysisResults(HashMap<Character, Long> frequencyDictionary, Scanner scanner)-
Описание: Запрашивает у пользователя путь к выходному файлу и записывает в него результаты анализа частоты символов. Программа следит за тем, чтобы пользователь не ввел пустой путь.
-
Параметры:
HashMap<Character, Long> frequencyDictionary: Результаты анализа частоты символов.Scanner scanner: ОбъектScannerдля считывания ввода пользователя.
-
Исключения:
InputStreamClosedException: Генерируется, если поток вводаScannerнеожиданно закрыт.
-
-
static HashMap<Character, Long> calculateLettersFrequency(File file)-
Описание: Считывает указанный файл и вычисляет частоту каждого буквенного символа (как строчного, так и заглавного).
-
Параметры:
File file: Входной файл для анализа.
-
Возвращает: Объект
HashMap<Character, Long>, содержащий частоту каждого символа. -
Исключения:
FileNotFoundException: Генерируется, если файл не существует.IOException: Генерируется при возникновении ошибки во время чтения файла.
-
Пользовательский класс исключений для обработки случаев, когда поток ввода неожиданно закрывается.
-
InputStreamClosedException()- Описание: Конструктор по умолчанию, который инициализирует исключение без сообщения.
-
InputStreamClosedException(String message)- Описание: Конструктор, который инициализирует исключение с пользовательским сообщением об ошибке.
- Параметры:
String message: Пользовательское сообщение об ошибке.
Класс Main является точкой входа в программу. Он управляет взаимодействием с пользователем и выполняет анализ частоты символов.
- Описание:
- Использует
Scannerдля запроса пути к входному файлу у пользователя и обрабатывает исключения, связанные с закрытием потока ввода. - Вызывает
FrequencyAnalyzer.calculateLettersFrequencyдля вычисления частоты символов и обрабатывает возможные исключения, такие какFileNotFoundExceptionиIOException. - Экспортирует результаты анализа с помощью
FrequencyAnalyzer.exportAnalysisResultsи проверяет корректность пути к выходному файлу.
- Использует