Skip to content

sergeywhite86/shift_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Простая Java-утилита для фильтрации данных из одного или нескольких текстовых файлов

Основные возможности

Фильтрация строк из входных файлов по типам: Целые числа → integers.txt

Вещественные числа → floats.txt

Строки → strings.txt

Поддержка опций командной строки:

-o <путь> — указание директории для выходных файлов

-p <префикс> — добавление префикса к именам файлов

-a — режим добавления (append) к существующим файлам

-s — вывод краткой статистики (количество элементов)

-f — вывод полной статистики (мин/макс/сумма/среднее)

Требования

Java версия: 17+ Система сборки: Maven 3.x Сторонние библиотеки: стандартная библиотека Java (JDK), дополнительных зависимостей нет.

🔧 Как собрать проект

Убедись, что установлены Java 17+ и Maven и собери проект: mvn clean package

После этого .jar будет находиться в папке target/.

▶️ Как запускать

java -jar target/SHIFT-83278-1.0-SNAPSHOT.jar [опции] [входные_файлы]

Примеры:

Простой запуск:

java -jar target/SHIFT-83278-1.0-SNAPSHOT.jar in1.txt in2.txt(файлы тоже залиты для удобства запуска и тестирования приложения)

С опциями:

java -jar target/SHIFT-83278-1.0-SNAPSHOT.jar -s -a -p sample_ -o ./output in1.txt in2.txt Где:

-s — краткая статистика

-f — полная статистика

-a — добавлять к существующим файлам

-p sample_ — префикс для выходных файлов

-o ./output — директория для выходных файлов

📄 Выходные файлы

Выходные файлы создаются только если есть соответствующие данные. Например, если указано -p sample_ и -o ./output, будут созданы:

./output/sample_integers.txt ./output/sample_floats.txt ./output/sample_strings.txt

📊 Статистика

Краткая (-s):

Integers: 3 Floats: 3 Strings: 2

Полная (-f): Для чисел:

Минимум Максимум Сумма Среднее

Для строк:

Количество Длина самой короткой строки Длина самой длинной строки

⚙️ Особенности реализации

Для хранения параметров командной строки используется неизменяемый класс record CommandLineArgs. Все ошибки обрабатываются: несуществующие файлы, недостающие аргументы и т.д. Логирование ошибок в консоль. Проверка формата чисел выполняется с помощью Long.parseLong() и Double.parseDouble(). Если парсинг невозможен, строка считается текстом. Файлы создаются только при наличии соответствующих данных. Использован чистый ООП-подход: Разделены ответственности: логика работы с файлами, фильтрацией, статистикой и аргументами командной строки. Реализованы enum-ы, например FileType. Использованы try-with-resources для работы с файлами.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages