From 48413fb868912ed93a7340691789904720377f12 Mon Sep 17 00:00:00 2001 From: Kaley Date: Wed, 1 Jan 2025 05:13:03 +0100 Subject: [PATCH] improve file & resource api --- src/main/java/org/comroid/api/comp/Archiver.java | 3 +-- .../java/org/comroid/api/java/ResourceLoader.java | 12 ++++++++++++ src/main/java/org/comroid/util/PathUtil.java | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/comroid/api/comp/Archiver.java b/src/main/java/org/comroid/api/comp/Archiver.java index a51010cb..78347531 100644 --- a/src/main/java/org/comroid/api/comp/Archiver.java +++ b/src/main/java/org/comroid/api/comp/Archiver.java @@ -1,6 +1,5 @@ package org.comroid.api.comp; -import lombok.Builder; import lombok.Getter; import lombok.Singular; import lombok.SneakyThrows; @@ -160,7 +159,7 @@ public boolean available() { return execPath.isDone() && !execPath.isCompletedExceptionally(); } - @Builder(builderMethodName = "zip", buildMethodName = "execute", builderClassName = "API") + //@Builder(builderMethodName = "zip", buildMethodName = "execute", builderClassName = "API") public CompletableFuture execute( Object outputPath, // without extension Object inputDirectory, diff --git a/src/main/java/org/comroid/api/java/ResourceLoader.java b/src/main/java/org/comroid/api/java/ResourceLoader.java index 77d3041b..4c4cc535 100644 --- a/src/main/java/org/comroid/api/java/ResourceLoader.java +++ b/src/main/java/org/comroid/api/java/ResourceLoader.java @@ -1,5 +1,8 @@ package org.comroid.api.java; +import org.comroid.util.PathUtil; + +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -36,6 +39,15 @@ static ResourceLoader ofDirectory(final File dir) { }; } + static InputStream fromResourceString(String string) throws FileNotFoundException { + if (string.startsWith("@:")) + return ClassLoader.getSystemClassLoader() + .getResourceAsStream(PathUtil.sanitize(string.substring(2))); + if (string.startsWith("@")) + return new FileInputStream(PathUtil.sanitize(string.substring(1))); + return new ByteArrayInputStream(PathUtil.sanitize(string).getBytes()); + } + default Reader getResourceReader(String name) { return new InputStreamReader(getResource(name)); } diff --git a/src/main/java/org/comroid/util/PathUtil.java b/src/main/java/org/comroid/util/PathUtil.java index 476670a2..4e3181d1 100644 --- a/src/main/java/org/comroid/util/PathUtil.java +++ b/src/main/java/org/comroid/util/PathUtil.java @@ -19,6 +19,6 @@ public static String sanitize(Object string) { var str = string.toString().replace('\\', '/'); for (var c : new char[]{ '<', '>', ':', '"', '|', '?', '*'/*,'/','\\'*/ }) str = str.replace(c, '_'); - return str; + return str.replaceFirst("^~", System.getProperty("user.home")); } }