boolean (@NotNull String name, @NotNull Platform os, boolean strict, @Nullable Charset cs) { if (name.isEmpty() || name.equals(".") || name.equals("..")) { return false; } for (int i = 0; i < name.length(); i++) { if (!isValidFileNameChar(name.charAt(i), os, strict)) { return false; } } if (os == Platform.WINDOWS && name.length() >= 3 && name.length() <= 4 && WINDOWS_RESERVED_NAMES.contains(name.toUpperCase(Locale.ENGLISH))) { return false; } return cs == null || cs.canEncode() && cs.newEncoder().canEncode(name); }