用于检验Windows下输入路径的合法性
在Windows系统中,路径的合法性主要涉及到几个关键点:路径字符串不能为空、路径中不能包含非法字符(如"<"
, ">"
, ":"
, "/"
, "\\"
, "|"
, "?"
, "*"
,在文件或目录名中可能还需要避免使用如" "
空格、"
"引号等特殊字符,尽管这些在某些情况下是允许的,但最好避免)、路径字符串不能仅包含驱动器号(如
C:`)而没有指定路径或文件名。
以下是一个简单的Java程序,用于检验Windows下输入路径的合法性:
java复制代码
public class WindowsPathValidator { | |
// 定义一个包含非法字符的字符串,用于检查 | |
private static final String ILLEGAL_CHARS = "<>:\"/\\|?*"; | |
/** | |
* 验证Windows路径的合法性 | |
* | |
* @param path 要验证的路径 | |
* @return 如果路径合法,则返回true;否则返回false | |
*/ | |
public static boolean isValidWindowsPath(String path) { | |
// 检查路径是否为空 | |
if (path == null || path.isEmpty()) { | |
return false; | |
} | |
// 检查路径是否仅包含驱动器号(如C:) | |
if (path.length() == 2 && Character.isLetter(path.charAt(0)) && path.charAt(1) == ':') { | |
return false; | |
} | |
// 检查路径中是否包含非法字符 | |
for (int i = 0; i < path.length(); i++) { | |
if (ILLEGAL_CHARS.indexOf(path.charAt(i)) != -1) { | |
return false; | |
} | |
} | |
// 路径通过所有检查,认为是合法的 | |
return true; | |
} | |
public static void main(String[] args) { | |
// 测试样例 | |
String[] testPaths = { | |
"C:\\Users\\Example\\Documents", | |
"D:\\Temp\\file.txt", | |
"C:", | |
"C:\\<invalid>", | |
"C:\\Users\\Example\\My Documents\\file.txt", // 注意:空格在Windows路径中是允许的 | |
"C:\\Users\\Example\\file?.txt", | |
"C:\\Users\\Example\\file*.txt" | |
}; | |
for (String path : testPaths) { | |
System.out.println("Path: " + path + " is valid? " + isValidWindowsPath(path)); | |
} | |
} | |
} |
测试样例和结果
C:\Users\Example\Documents
:合法D:\Temp\file.txt
:合法C:
:不合法(仅包含驱动器号)C:\<invalid>
:不合法(包含非法字符<
)C:\Users\Example\My Documents\file.txt
:合法(尽管包含空格,但在Windows中是允许的)C:\Users\Example\file?.txt
:不合法(包含非法字符?
)C:\Users\Example\file*.txt
:不合法(包含非法字符*
)
这个程序简单明了地实现了对Windows路径合法性的基本检查。注意,这只是一个基础版本,实际应用中可能需要根据具体需求进行扩展和调整。