From ff0b83c2476a9243d4503e0823f35f0d9df5badf Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Sat, 4 Nov 2023 21:24:59 +0200 Subject: [PATCH] [BUG] Fix files being detected as text when it's a binary --- .gitignore | 3 ++- build.gradle | 1 - gradle.properties | 2 +- .../modfusioner/actions/JarMergeAction.java | 2 +- .../modfusioner/utils/FileChecks.java | 22 ++++++++++++++----- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 6f2854d..2f68337 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,5 @@ bin/ ### Mac OS ### .DS_Store -.idea \ No newline at end of file +.idea +testdir/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index bdb181a..99325da 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,6 @@ dependencies { shadeMe 'org.ow2.asm:asm-commons:9.3' shadeMe "fr.stevecohen.jarmanager:JarManager:0.5.0" shadeMe 'org.apache.commons:commons-compress:1.24.0' - shadeMe 'org.apache.tika:tika-core:1.28' compileOnly 'org.projectlombok:lombok:1.18.30' annotationProcessor 'org.projectlombok:lombok:1.18.30' diff --git a/gradle.properties b/gradle.properties index ca2edc2..eed5ace 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ version_base=1.0 -version_patch=2 \ No newline at end of file +version_patch=3 \ No newline at end of file diff --git a/src/main/java/com/hypherionmc/modfusioner/actions/JarMergeAction.java b/src/main/java/com/hypherionmc/modfusioner/actions/JarMergeAction.java index 25573eb..92bafc6 100644 --- a/src/main/java/com/hypherionmc/modfusioner/actions/JarMergeAction.java +++ b/src/main/java/com/hypherionmc/modfusioner/actions/JarMergeAction.java @@ -418,7 +418,7 @@ public class JarMergeAction { for (Map.Entry entry : relocations.entrySet()) { line = line.replace(entry.getKey(), entry.getValue()); } - sb.append(line).append("\n"); + sb.append(line); } scanner.close(); diff --git a/src/main/java/com/hypherionmc/modfusioner/utils/FileChecks.java b/src/main/java/com/hypherionmc/modfusioner/utils/FileChecks.java index cf92a41..f1aaf7c 100644 --- a/src/main/java/com/hypherionmc/modfusioner/utils/FileChecks.java +++ b/src/main/java/com/hypherionmc/modfusioner/utils/FileChecks.java @@ -9,9 +9,7 @@ */ package com.hypherionmc.modfusioner.utils; -import org.apache.tika.Tika; import org.jetbrains.annotations.NotNull; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -27,10 +25,22 @@ public class FileChecks { * @param file - The file to test * @return - True if binary */ - public static boolean isBinary(@NotNull File file) throws IOException { - Tika tika = new Tika(); - String detectedType = tika.detect(file); - return detectedType.equals("application/octet-stream"); + public static boolean isBinary(@NotNull File file) { + try (FileInputStream inputStream = new FileInputStream(file)) { + int size = (int) Math.min(file.length(), 4096); + byte[] data = new byte[size]; + int bytesRead = inputStream.read(data, 0, size); + + for (int i = 0; i < bytesRead; i++) { + if (data[i] == 0) { + return true; + } + } + return false; + } catch (IOException e) { + e.printStackTrace(); + return false; + } } /**