FileFixUtil.java

net.minecraft.util.filefix.FileFixUtil

信息

  • 全限定名:net.minecraft.util.filefix.FileFixUtil
  • 类型:public class
  • 包:net.minecraft.util.filefix
  • 源码路径:src/main/java/net/minecraft/util/filefix/FileFixUtil.java
  • 起始行号:L13
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L14
    • 说明:

      TODO

  • NAMESPACE_PATTERN

    • 类型: String
    • 修饰符: public static final
    • 源码定位: L15
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public static void moveFile(Path baseDirectory, String from, String to) @ L17

  • 方法名:moveFile
  • 源码定位:L17
  • 返回类型:void
  • 修饰符:public static

参数:

  • baseDirectory: Path
  • from: String
  • to: String

说明:

TODO

public static void deleteFileOrEmptyDirectory(Path baseDirectory, String file) @ L30

  • 方法名:deleteFileOrEmptyDirectory
  • 源码定位:L30
  • 返回类型:void
  • 修饰符:public static

参数:

  • baseDirectory: Path
  • file: String

说明:

TODO

代码

public class FileFixUtil {
    private static final Logger LOGGER = LogUtils.getLogger();
    public static final String NAMESPACE_PATTERN = "([a-z0-9_.-]+)";
 
    public static void moveFile(Path baseDirectory, String from, String to) throws IOException {
        Path fromAbsolute = baseDirectory.resolve(from);
        if (Files.exists(fromAbsolute)) {
            Path toAbsolute = baseDirectory.resolve(to);
            if (Files.exists(toAbsolute)) {
                LOGGER.warn("Target already exists, skipping move from {} to {}", from, to);
            } else {
                FileUtil.createDirectoriesSafe(toAbsolute.getParent());
                Files.move(fromAbsolute, toAbsolute, StandardCopyOption.COPY_ATTRIBUTES);
            }
        }
    }
 
    public static void deleteFileOrEmptyDirectory(Path baseDirectory, String file) throws IOException {
        Path toDelete = baseDirectory.resolve(file);
        if (Files.exists(toDelete)) {
            if (Files.isDirectory(toDelete)) {
                try {
                    try (Stream<Path> paths = Files.list(toDelete)) {
                        List<Path> files = paths.toList();
                        if (files.size() == 1 && files.getFirst().getFileName().toString().equals(".DS_Store")) {
                            LOGGER.debug("Attempting to delete DS_Store at '{}'", toDelete);
                            if (!Files.deleteIfExists(files.getFirst())) {
                                LOGGER.warn("Failed to delete file '{}' at '{}'", files.getFirst(), toDelete);
                            }
                        }
                    }
 
                    List var12;
                    try (Stream<Path> pathsx = Files.list(toDelete)) {
                        var12 = pathsx.toList();
                    }
 
                    if (!var12.isEmpty()) {
                        LOGGER.warn("Failed to delete directory '{}', as it's not empty. Content: {}", toDelete, var12);
                        return;
                    }
                } catch (IOException var11) {
                    LOGGER.warn("Failed to delete directory '{}' because {}", toDelete, var11.toString());
                    return;
                }
            }
 
            Files.deleteIfExists(toDelete);
        }
    }
}

引用的其他类

  • FileUtil
    • 引用位置: 方法调用
    • 关联成员: FileUtil.createDirectoriesSafe()