/* * Minecraft Forge * Copyright (c) 2016-2019. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation version 2.1 * of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package net.minecraftforge.fml.loading; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.IOException; import java.nio.file.FileAlreadyExistsException; import java.nio.file.Files; import java.nio.file.Path; import static net.minecraftforge.fml.loading.LogMarkers.CORE; public class FileUtils { private static final Logger LOGGER = LogManager.getLogger(); public static Path getOrCreateDirectory(Path dirPath, String dirLabel) { if (!Files.isDirectory(dirPath.getParent())) { getOrCreateDirectory(dirPath.getParent(), "parent of "+dirLabel); } if (!Files.isDirectory(dirPath)) { LOGGER.debug(CORE,"Making {} directory : {}", dirLabel, dirPath); try { Files.createDirectory(dirPath); } catch (IOException e) { if (e instanceof FileAlreadyExistsException) { LOGGER.fatal(CORE,"Failed to create {} directory - there is a file in the way", dirLabel); } else { LOGGER.fatal(CORE,"Problem with creating {} directory (Permissions?)", dirLabel, e); } throw new RuntimeException("Problem creating directory", e); } LOGGER.debug(CORE,"Created {} directory : {}", dirLabel, dirPath); } else { LOGGER.debug(CORE,"Found existing {} directory : {}", dirLabel, dirPath); } return dirPath; } }