获取文件路径如下:
在windows 和 linux 下获取方式会有一些差异,需判断操作系统类型。此处只判断windows 和 linux两种情况。
String classpath = "";
//判断是否为 windows 系统
if(OsInfoUtil.isWindows()){
classpath = this.getClass().getResource("/").getPath().replaceFirst("/", "");
}else{
// linux系统 需要去掉 replaceFirst("/", ""),否则会出现java.io.FileNotFoundException 异常
classpath = this.getClass().getResource("/").getPath();
}
// 把WEB-INF/classes截取
String webappRoot = classpath.replaceAll("WEB-INF/classes/", "");
// 拼接文件目录
String fileName = webappRoot + "/excleTemplate/课程月度汇总.xls";
判断系统类型工具类:
1.操作系统的枚举
public enum OsType {
Linux("Linux"), Mac_OS("Mac OS"), Mac_OS_X("Mac OS X"), Windows("Windows");
private OsType(String desc) {
this.description = desc;
}
public String toString() {
return description;
}
private String description;
}
2.获取系统类型工具类:
public class OsInfoUtil {
private static String OS = System.getProperty("os.name").toLowerCase();
private static OsInfoUtil _instance = new OsInfoUtil();
private OsType platform;
private OsInfoUtil() {
}
public static boolean isLinux() {
return OS.indexOf("linux") >= 0;
}
public static boolean isMacOS() {
return OS.indexOf("mac") >= 0 && OS.indexOf("os") > 0 && OS.indexOf("x") < 0;
}
public static boolean isMacOSX() {
return OS.indexOf("mac") >= 0 && OS.indexOf("os") > 0 && OS.indexOf("x") > 0;
}
public static boolean isWindows() {
return OS.indexOf("windows") >= 0;
}
/**
* 获取操作系统名字
*
* @return 操作系统名
*/
public static OsType getOSname() {
if (isLinux()) {
_instance.platform = OsType.Linux;
} else if (isMacOS()) {
_instance.platform = OsType.Mac_OS;
} else if (isMacOSX()) {
_instance.platform = OsType.Mac_OS_X;
} else if (isWindows()) {
_instance.platform = OsType.Windows;
}
return _instance.platform;
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(OsInfoUtil.getOSname());// 获取系统类型
System.out.println(OsInfoUtil.isWindows());// 判断是否为windows系统
}