Skip to content

Latest commit

 

History

History
72 lines (45 loc) · 5.42 KB

File metadata and controls

72 lines (45 loc) · 5.42 KB

Частотный анализ. Пример работы с Java I/O.

Описание программы

Этот проект представляет собой анализатор частоты символов на языке Java. Он читает входной текстовый файл, анализирует частоту появления буквенных символов (с учетом регистра) и экспортирует результаты в выходной файл. Если путь к входному файлу не указан или является недействительным, используется текстовый файл по умолчанию, расположенный по адресу src/main/resources/java_description.txt.

Класс: FrequencyAnalyzer

Класс FrequencyAnalyzer обрабатывает операции с входными и выходными файлами, а также выполняет анализ частоты символов в текстовых файлах.

Методы:

  1. static File getInputFileFromUser(Scanner scanner)

    • Описание: Запрашивает у пользователя путь к файлу для анализа текста. Если пользователь вводит пустую строку, используется файл по умолчанию src/main/resources/java_description.txt.

    • Параметры:

      • Scanner scanner: Объект Scanner для считывания ввода пользователя.
    • Возвращает: Объект File, представляющий входной файл пользователя.

    • Исключения:

      • InputStreamClosedException: Генерируется, если поток ввода Scanner неожиданно закрыт.
  2. static void exportAnalysisResults(HashMap<Character, Long> frequencyDictionary, Scanner scanner)

    • Описание: Запрашивает у пользователя путь к выходному файлу и записывает в него результаты анализа частоты символов. Программа следит за тем, чтобы пользователь не ввел пустой путь.

    • Параметры:

      • HashMap<Character, Long> frequencyDictionary: Результаты анализа частоты символов.
      • Scanner scanner: Объект Scanner для считывания ввода пользователя.
    • Исключения:

      • InputStreamClosedException: Генерируется, если поток ввода Scanner неожиданно закрыт.
  3. static HashMap<Character, Long> calculateLettersFrequency(File file)

    • Описание: Считывает указанный файл и вычисляет частоту каждого буквенного символа (как строчного, так и заглавного).

    • Параметры:

      • File file: Входной файл для анализа.
    • Возвращает: Объект HashMap<Character, Long>, содержащий частоту каждого символа.

    • Исключения:

      • FileNotFoundException: Генерируется, если файл не существует.
      • IOException: Генерируется при возникновении ошибки во время чтения файла.

Класс: InputStreamClosedException

Пользовательский класс исключений для обработки случаев, когда поток ввода неожиданно закрывается.

Конструкторы:

  1. InputStreamClosedException()

    • Описание: Конструктор по умолчанию, который инициализирует исключение без сообщения.
  2. InputStreamClosedException(String message)

    • Описание: Конструктор, который инициализирует исключение с пользовательским сообщением об ошибке.
    • Параметры:
      • String message: Пользовательское сообщение об ошибке.

Класс: Main

Класс Main является точкой входа в программу. Он управляет взаимодействием с пользователем и выполняет анализ частоты символов.

Метод: main(String[] args)

  • Описание:
    • Использует Scanner для запроса пути к входному файлу у пользователя и обрабатывает исключения, связанные с закрытием потока ввода.
    • Вызывает FrequencyAnalyzer.calculateLettersFrequency для вычисления частоты символов и обрабатывает возможные исключения, такие как FileNotFoundException и IOException.
    • Экспортирует результаты анализа с помощью FrequencyAnalyzer.exportAnalysisResults и проверяет корректность пути к выходному файлу.