From 77cdc2108f317a0ab9ca322df4a3b49085b9aac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=9E=E5=BA=90?= <109708109+CiiLu@users.noreply.github.com> Date: Sun, 21 Dec 2025 21:20:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E9=9D=9E=20Windows=20=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E4=B9=9F=E5=B0=86=20`:`=20=E8=A7=86=E4=B8=BA=E9=9D=9E?= =?UTF-8?q?=E6=B3=95=E5=AD=97=E7=AC=A6=20(#5035)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/jackhuang/hmcl/util/io/FileUtils.java | 3 ++- .../test/java/org/jackhuang/hmcl/util/io/FileUtilsTest.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/FileUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/FileUtils.java index 0a7043f23..b53a14620 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/FileUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/io/FileUtils.java @@ -177,6 +177,7 @@ public final class FileUtils { if (!Character.isValidCodePoint(codePoint) || Character.isISOControl(codePoint) || codePoint == '/' || codePoint == '\0' + || codePoint == ':' // Unicode replacement character || codePoint == 0xfffd // Not Unicode character @@ -185,7 +186,7 @@ public final class FileUtils { // https://learn.microsoft.com/windows/win32/fileio/naming-a-file if (os == OperatingSystem.WINDOWS && - (ch == '<' || ch == '>' || ch == ':' || ch == '"' || ch == '\\' || ch == '|' || ch == '?' || ch == '*')) { + (ch == '<' || ch == '>' || ch == '"' || ch == '\\' || ch == '|' || ch == '?' || ch == '*')) { return false; } } diff --git a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/FileUtilsTest.java b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/FileUtilsTest.java index f8d824485..ffe4f90e9 100644 --- a/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/FileUtilsTest.java +++ b/HMCLCore/src/test/java/org/jackhuang/hmcl/util/io/FileUtilsTest.java @@ -52,6 +52,7 @@ public class FileUtilsTest { assertFalse(FileUtils.isNameValid(os, "a\uD83Db")); assertFalse(FileUtils.isNameValid(os, "a\uDE00b")); assertFalse(FileUtils.isNameValid(os, "a\uDE00\uD83Db")); + assertFalse(FileUtils.isNameValid(os, "f:oo")); // Platform-specific tests boolean isWindows = os == OperatingSystem.WINDOWS; @@ -62,7 +63,6 @@ public class FileUtilsTest { assertEquals(isNotWindows, FileUtils.isNameValid(os, "foo ")); assertEquals(isNotWindows, FileUtils.isNameValid(os, "foo")); - assertEquals(isNotWindows, FileUtils.isNameValid(os, "f:oo")); assertEquals(isNotWindows, FileUtils.isNameValid(os, "f?oo")); assertEquals(isNotWindows, FileUtils.isNameValid(os, "f*oo")); assertEquals(isNotWindows, FileUtils.isNameValid(os, "f\\oo"));