Вначале я планировал написать класс, который будет предоставлять методы для работы с загруженными файлами: посмотреть список загруженных, удалить старые и т.д.
Но потом вспомнил, что у нас ровно один файл, чьё название никогда не изменяется, и решил сделать компонент, который будет отвечать только за создание рабочей директории для приложения.
Рабочая директория нужна приложению для загрузки в неё файла с датасетом. Если такая директория отсутствует и её невозможно создать, то смысла в работе остальных компонентов приложения (загрузчик фалов и парсер) не будет.
Получился вот такой класс FileManager:
@Slf4j public class FileManager { /** * Create directory if not exists. * * @param path {@link String} path to the directory. * @return {@code true} if directory was created successful or directory already exists, {@code false} if got * Exception. */ public boolean createIfNotExists(String path) { try { File dir = new File(path); if (!dir.exists()) { log.info("Create directory {}.", dir); return dir.mkdirs(); } else { log.info("Directory {} already exists.", dir.getPath()); return true; } } catch (Exception e) { log.error("Exception when try check or create directory: {}", path); return false; } } }
Юнит-тест подтверждает, что этот класс работает так, как нам нужно:
public class FileManagerTest { private final String path = Objects.requireNonNull(getClass().getClassLoader().getResource(".")).getPath() + "test-work-dir"; @Test public void createIfNotExists_shouldCreateDirectoriesInWorkDirectory() { FileManager fileManager = new FileManager(); boolean result = fileManager.createIfNotExists(path); assertTrue(result); File dir = Paths.get(path).toFile(); assertTrue(dir.exists()); assertTrue(dir.isDirectory()); assertTrue(dir.delete()); } @Test public void createIfNotExists_shouldCorrectWorkIfWorkDirectoryAlreadyExists() { FileManager fileManager = new FileManager(); boolean result1 = fileManager.createIfNotExists(path); boolean result2 = fileManager.createIfNotExists(path); assertTrue(result1); assertTrue(result2); File dir = Paths.get(path).toFile(); assertTrue(dir.exists()); assertTrue(dir.isDirectory()); assertTrue(dir.delete()); } }
Комментариев нет:
Отправить комментарий