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