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);
}
}