Java判断linux和windows的文件合法路径
不多bb,应该是80%可用。public enum OSType {LINUX,WINDOWS,OTHERS;}然后判断路径是否合法:private static final Pattern linux_path_pattern=Pattern.compile("(/([a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255}/)*([a-zA-Z0-9][a-zA-Z0-9_\\-]{0
·
不多bb,应该是80%可用。除根路径如C:\\或/,后缀不要加/。
public enum OSType {
LINUX,
WINDOWS,
OTHERS;
}
然后判断路径是否合法:
private static final Pattern linux_path_pattern=Pattern.compile("(/([a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255}/)*([a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255})|/)");
private static final Pattern windows_path_pattern=Pattern.compile("(^[A-Z]:((\\\\|/)([a-zA-Z0-9\\-_]){1,255}){1,255}|([A-Z]:(\\\\|/)))");
/**
* check path is valid in windows and linux
* @param path path to be validate
* @param platform valid value: linux,windows
* @return whether the path is valid
* **/
public static boolean checkPathValid(String path,String platform){
if (platform.toLowerCase().equals(OSType.LINUX.name().toLowerCase())) return checkPatternMatch(linux_path_pattern,path);
if (platform.toLowerCase().equals(OSType.WINDOWS.name().toLowerCase())) return checkPatternMatch(windows_path_pattern,path);
return false;
}
private static boolean checkPatternMatch(Pattern pattern,String target){
return pattern.matcher(target).matches();
}
主要思路
linux_path_pattern=Pattern.compile("(/([a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255}/)*([a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255})|/)");
其中:
[a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255}
模式1:代表以数字或字母[a-zA-Z0-9]开头,后面字母或下划线和破折号[a-zA-Z0-9_\\-]可以出现0-255次。
([a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255}/)*
代表上面的模式1可以出现0到多次。后面使用相同的[a-zA-Z0-9][a-zA-Z0-9_\\-]{0,255}模式来禁止后面加/。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)