Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bgdnlmzn/file_util

Тестовое задание - ШИФТ Курс JAVA.
https://github.com/bgdnlmzn/file_util

gradle icu4j java jcommander

Last synced: 9 days ago
JSON representation

Тестовое задание - ШИФТ Курс JAVA.

Awesome Lists containing this project

README

        

# **Утилита фильтрации содержимого файлов**
- **Java** 17
- **Gradle** 8.5
## **Сторонние библиотеки**
- **JCommander** 1.82 [ссылка](https://jcommander.org/)

Эта библиотека используется для обработки аргументов командной строки.
```groovy
dependencies {
implementation 'com.beust:jcommander:1.82'
}
```
- **ICU4J** 75.1 [ссылка](https://unicode-org.github.io/icu/userguide/icu4j/)

Эта библиотека используется для определения кодировки входных файлов.
```groovy
dependencies {
implementation 'com.ibm.icu:icu4j:75.1'
}
```
> [!NOTE]
> Все выходные файлы создаются в кодировке UTF-8.
## Система сборки
Проект использует систему сборки Gradle. Также в проекте используется плагин [Shadow](https://github.com/GradleUp/shadow) для создания fat JAR-файлов, которые включают все зависимости.
```groovy
plugins {
id 'com.gradleup.shadow' version '8.3.0'
}
```
## Сборка проекта
1. Клонируйте репозиторий и перейдите в корневую директорию проекта:
```shell
git clone https://github.com/bgdnlmzn/file_util.git
cd file_util
```
2. Выполните следующую команду для сборки проекта и создания JAR-файла:
```shell
./gradlew build
```
*или*
```shell
gradlew build
```
## Запуск утилиты
После сборки проекта JAR-файл будет создан в директории build/libs с именем **util.jar.**
Для запуска утилиты используйте следующую команду:
```shell
java -jar build/libs/util.jar [опции] [файлы]
```
## Примеры использования
1. С выводом краткой статистики и добавлением в существующие файлы:
```shell
java -jar build/libs/util.jar -s -a -p sample- in1.txt in2.txt
```
2. С выводом полной статистики и указанием пути для результатов:
```shell
java -jar build/libs/util.jar -f -o /some/path -p result_ in1.txt in2.txt
```
## Описание опций
- `-s`: вывод краткой статистики (количество элементов в исходящих файлах)
- `-f`: вывод полной статистики (минимум, максимум, сумма, среднее для чисел; размер самой короткой и самой длинной строки для строк)
- `-a`: режим добавления в существующие файлы (по умолчанию перезаписываются)
- `-o <путь>`: задает путь для результатов (по умолчанию результаты располагаются в текущей папке)
- `-p <префикс>`: задает префикс имен выходных файлов (по умолчанию: *integers.txt*, *floats.txt*, *strings.txt*)
> [!NOTE]
> - Если вы указываете файл без пути, например **in1.txt**, утилита предполагает, что этот файл находится в корневой директории проекта.
Чтобы указать файл в другой директории, используйте полный путь, например **"C:/files/in1.txt"**;
> - Если директория или имя файла содержит пробелы, обязательно указывайте путь в кавычках. Например: **"C:/my files/in1.txt"**. Это предотвращает ошибки, связанные с неправильной интерпретацией пути;
> - Если вы указываете несуществующую директорию в параметре **-o**, например **"C:/output/files"**, утилита автоматически создаст эту директорию.
Однако, если вы укажете относительный путь, например **"some/path"**, директория будет создана в корневой папке проекта.
## Пример входных данных
- Запуск утилиты
```
java -jar build/libs/util.jar -s -a -p sample- in1.txt in2.txt
```
`in1.txt`:
```text
Lorem ipsum dolor sit amet
45
Пример
3.1415
consectetur adipiscing
-0.001
тестовое задание
100500
```
`in2.txt`:
```text
Нормальная форма числа с плавающей запятой
1.528535047E-25
Long
1234567890123456789
```
## Пример выходных данных
- Краткая статистика(выводится в консоль):
```
Done!
Statistics for floats:
Amount: 3
Statistics for strings:
Amount: 6
Statistics for integers:
Amount: 3
```
> [!NOTE]
> Краткая статистика содержит только
количество элементов записанных в исходящие файлы. Полная статистика для чисел
дополнительно содержит минимальное и максимальное значения, сумма и среднее.
Полная статистика для строк, помимо их количества, содержит также размер самой
короткой строки и самой длинной.
- Файл *sample-integers.txt*:
```text
45
100500
1234567890123456789
```
- Файл *sample-floats.txt*:
```text
3.1415
-0.001
1.528535047E-25
```
- Файл *sample-strings.txt*:
```text
Lorem ipsum dolor sit amet
Пример
consectetur adipiscing
тестовое задание
Нормальная форма числа с плавающей запятой
Long
```