FileUtil class

Пакет: com.hypixel.hytale.server.core.util.io

Файл: com/hypixel/hytale/server/core/util/io/FileUtil.java

Поля (11)

МодификаторыТипИмя
final Set<OpenOption> DEFAULT_WRITE_OPTIONS
Path var3
ZipEntry var3
Path var3
Path var4
Path var4
Path var4
Path var4
Path var5
Path var5
int var7

Методы (14)

МодификаторыВозвратСигнатура
abstract throw new RuntimeExceptionthrow new RuntimeException("Error copying path", var5)
abstract throw new RuntimeExceptionthrow new RuntimeException("Error moving path", var6)
static void atomicMovevoid atomicMove(@Nonnull Path var0, @Nonnull Path var1)
abstract atomicMove atomicMove(var0, var4)
abstract atomicMove atomicMove(var3, var0)
static void copyDirectoryvoid copyDirectory(@Nonnull Path var0, @Nonnull Path var1)
static void deleteDirectoryvoid deleteDirectory(@Nonnull Path var0)
static void extractZipvoid extractZip(@Nonnull Path var0, @Nonnull Path var1)
static void extractZipvoid extractZip(@Nonnull InputStream var0, @Nonnull Path var1)
static void moveDirectoryContentsvoid moveDirectoryContents(@Nonnull Path var0, @Nonnull Path var1, CopyOption... var2)
static void unzipFilevoid unzipFile(@Nonnull Path var0, @Nonnull byte[] var1, @Nonnull ZipInputStream var2, @Nonnull ZipEntry var3, @Nonnull String var4)
static void writeStringAtomicvoid writeStringAtomic(@Nonnull Path var0, @Nonnull String var1, boolean var2)
static void writeStringAtomicvoid writeStringAtomic(@Nonnull Path var0, @Nonnull String var1)
abstract writeStringAtomic writeStringAtomic(var0, var1, true)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.util.io;

class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import java.io.IOException;
class="kw">import java.io.InputStream;
class="kw">import java.io.OutputStream;
class="kw">import java.nio.file.AtomicMoveNotSupportedException;
class="kw">import java.nio.file.CopyOption;
class="kw">import java.nio.file.FileVisitOption;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.OpenOption;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.StandardCopyOption;
class="kw">import java.nio.file.StandardOpenOption;
class="kw">import java.util.Comparator;
class="kw">import java.util.Set;
class="kw">import java.util.regex.Pattern;
class="kw">import java.util.stream.Stream;
class="kw">import java.util.zip.ZipEntry;
class="kw">import java.util.zip.ZipException;
class="kw">import java.util.zip.ZipInputStream;
class="kw">import javax.annotation.Nonnull;

class="kw">public class FileUtil {
   class="kw">public class="kw">static class="kw">final Set<OpenOption> DEFAULT_WRITE_OPTIONS = Set.of(StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE);
   class="kw">public class="kw">static class="kw">final Set<FileVisitOption> DEFAULT_WALK_TREE_OPTIONS_SET = Set.of();
   class="kw">public class="kw">static class="kw">final FileVisitOption[] DEFAULT_WALK_TREE_OPTIONS_ARRAY = new FileVisitOption[0];
   class="kw">public class="kw">static class="kw">final Pattern INVALID_FILENAME_CHARACTERS = Pattern.compile("[<>:\"|?*/\\\\]");

   class="kw">public FileUtil() {
   }

   class="kw">public class="kw">static void unzipFile(@Nonnull Path var0, @Nonnull byte[] var1, @Nonnull ZipInputStream var2, @Nonnull ZipEntry var3, @Nonnull String var4) class="kw">throws IOException {
      Path var5 = var0.resolve(var4);
      if (!var5.toAbsolutePath().startsWith(var0)) {
         throw new ZipException("Entry is outside of the target dir: " + var3.getName());
      }

      if (var3.isDirectory()) {
         Files.createDirectory(var5);
      } else {
         int var7;
         try (OutputStream var6 = Files.newOutputStream(var5)) {
            while ((var7 = var2.read(var1)) > 0) {
               var6.write(var1, 0, var7);
            }
         }
      }

      var2.closeEntry();
   }

   class="kw">public class="kw">static void copyDirectory(@Nonnull Path var0, @Nonnull Path var1) class="kw">throws IOException {
      try (Stream var2 = Files.walk(var0)) {
         var2.forEach(var2x -> {
            try {
               Path var3 = var0.relativize(var2x);
               Path var4 = var1.resolve(var3);
               Files.copy(var2x, var4);
            } catch (Throwable var5) {
               throw new RuntimeException("Error copying path", var5);
            }
         });
      }
   }

   class="kw">public class="kw">static void moveDirectoryContents(@Nonnull Path var0, @Nonnull Path var1, CopyOption... var2) class="kw">throws IOException {
      try (Stream var3 = Files.walk(var0)) {
         var3.forEach(var3x -> {
            if (!var3x.equals(var0)) {
               try {
                  Path var4 = var0.relativize(var3x);
                  Path var5 = var1.resolve(var4);
                  Files.move(var3x, var5, var2);
               } catch (Throwable var6) {
                  throw new RuntimeException("Error moving path", var6);
               }
            }
         });
      }
   }

   class="kw">public class="kw">static void deleteDirectory(@Nonnull Path var0) class="kw">throws IOException {
      try (Stream var1 = Files.walk(var0)) {
         var1.sorted(Comparator.reverseOrder()).forEach(SneakyThrow.sneakyConsumer(Files::delete));
      }
   }

   class="kw">public class="kw">static void extractZip(@Nonnull Path var0, @Nonnull Path var1) class="kw">throws IOException {
      extractZip(Files.newInputStream(var0), var1);
   }

   class="kw">public class="kw">static void extractZip(@Nonnull InputStream var0, @Nonnull Path var1) class="kw">throws IOException {
      ZipEntry var3;
      try (ZipInputStream var2 = new ZipInputStream(var0)) {
         for (; (var3 = var2.getNextEntry()) != null; var2.closeEntry()) {
            Path var4 = var1.resolve(var3.getName()).normalize();
            if (!var4.startsWith(var1)) {
               throw new ZipException("Zip entry outside target directory: " + var3.getName());
            }

            if (var3.isDirectory()) {
               Files.createDirectories(var4);
            } else {
               Files.createDirectories(var4.getParent());
               Files.copy(var2, var4, StandardCopyOption.REPLACE_EXISTING);
            }
         }
      }
   }

   class="kw">public class="kw">static void writeStringAtomic(@Nonnull Path var0, @Nonnull String var1, boolean var2) class="kw">throws IOException {
      Path var3 = var0.resolveSibling(var0.getFileName() + ".tmp");
      Path var4 = var0.resolveSibling(var0.getFileName() + ".bak");
      Files.writeString(var3, var1);
      if (var2 && Files.isRegularFile(var0)) {
         atomicMove(var0, var4);
      }

      atomicMove(var3, var0);
   }

   class="kw">public class="kw">static void atomicMove(@Nonnull Path var0, @Nonnull Path var1) class="kw">throws IOException {
      try {
         Files.move(var0, var1, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
      } catch (AtomicMoveNotSupportedException var3) {
         Files.move(var0, var1, StandardCopyOption.REPLACE_EXISTING);
      }
   }

   class="kw">public class="kw">static void writeStringAtomic(@Nonnull Path var0, @Nonnull String var1) class="kw">throws IOException {
      writeStringAtomic(var0, var1, true);
   }
}