我们可以通过枚举来定义获得web-inf 和 classpath的路径
先看下面我自己写的一个枚举
public enum EnumClassPath {
/*
* windows 获得classpath路径,后面加"resources\\initweb\\config_webinfo.properties"
* windows 获得web-inf 路径
*/
WinClassPath(Thread.currentThread().getContextClassLoader().getResource("").toString().replace('/', '\\').replace("file:", "").replace("%20", " ").substring(1).replace("%20", " ")),
WinWebInf(Thread.currentThread().getContextClassLoader().getResource("").toString().replace('/', '\\').replace("file:", "").replace("classes\\", "").replace("%20", " ").substring(1).replace("%20", " ")),
/*
* linux 获得classpath路径,后面加"resources\\initweb\\config_webinfo.properties"
* linux 获得web-inf 路径
*/
LinuxClassPath(Thread.currentThread().getContextClassLoader().getResource("").toString().replace("file:", "").replace("%20", " ")),
LinuxWebInf(Thread.currentThread().getContextClassLoader().getResource("").toString().replace("file:", "").replace("classes/", "").replace("%20", " "));
private String classpath;
private EnumClassPath(String classpath){
this.classpath = classpath;
}
public String getClassPath() {
return this.classpath;
}
}这样,我们就可以很轻松的得到windows和linux下 web-inf和classpath的路径
下面的代码是上面代码的扩展
public enum EnumPath {
spot(path_spot()), //对点的分割 win: /。 linux:\\。
config_webinfo(path_config_webinfo()), //获得配置文件
loginregister_log(path_loginregister_log()), //获得日志文件路径
Eamil(path_email()), //获得email的参数
webinf(path_webinf()), //获得web-inf地址
classpath(path_class()), //获得classpath地址
arhtmlpath(path_arhtml()), //获得html地址
updatepath(path_update()); //上传的图片地址,相对于web-inf的目录地址
private String path;
private EnumPath(String path){
this.path = path;
}
private static String path_webinf() {
if(System.getProperty("os.name").equals("win")){
return EnumClassPath.WinWebInf.getClassPath();
}else{
return EnumClassPath.LinuxWebInf.getClassPath();
}
}
private static String path_class() {
if(System.getProperty("os.name").equals("win")){
return EnumClassPath.WinClassPath.getClassPath();
}else{
return EnumClassPath.LinuxClassPath.getClassPath();
}
}
private static String path_update() {
if(System.getProperty("os.name").equals("win")){
//这里获得配置文件的路径,我这里先直接写
return "\\upload\\images\\";
}else{
return "/upload/images/";
}
}
private static String path_spot() {
if(System.getProperty("os.name").equals("win")){
return "/.";
}else{
return "\\.";
}
}
private static String path_email() {
if(System.getProperty("os.name").equals("win")){
return EnumClassPath.WinClassPath.getClassPath()+"email.properties";
}else{
return EnumClassPath.LinuxClassPath.getClassPath()+"email.properties";
}
}
private static String path_config_webinfo(){
if(System.getProperty("os.name").equals("win")){
return "WEB-INF\\classes\\initweb\\config_webinfo.properties";
}else{
return "WEB-INF/classes/initweb/config_webinfo.properties";
}
}
private static String path_arhtml(){
if(System.getProperty("os.name").equals("win")){
return "\\theme\\freemaker\\html\\article\\";
}else{
return "/theme/freemaker/html/article/";
}
}
private static String path_loginregister_log(){
if(System.getProperty("os.name").equals("win")){
return EnumClassPath.WinWebInf.getClassPath()+"loginregister\\log";
}else{
return EnumClassPath.LinuxWebInf.getClassPath()+"loginregister/log";
}
}
public String getClassPath() {
return this.path;
}
}个人认为主要的方法是 path_webinf()和path_class() 这两个方法,开发者将不必再关心当前操作系统是windows还是linux,将由系统自动判断,并且给出对应的地址
以上代码仅供参考,根据自己的实际情况增删即可。
爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情