Skip to content

Java program which counts English letters frequency in given text file, writing the result into other text file. HSE course lab work

Notifications You must be signed in to change notification settings

YMagus/Java-IO-hometask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Частотный анализ. Пример работы с 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 и проверяет корректность пути к выходному файлу.

About

Java program which counts English letters frequency in given text file, writing the result into other text file. HSE course lab work

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages