在JAVA Web编程和程中,我经常要用到网站根目录以设置文件的上传目录,下面这个类可以很好的实现相关的功能。这个类用静态成员变量,数据获取方便,省去许多不必要的操作。
import java.io.File;
import java.io.IOException;
public class ConstUtil {
/**
* 网站运行的根目录
*/
public static String ROOT_PATH = getRootPath();
/**
* 系统目录分隔符
*/
public static String PATH_DS = getDirectorySeparator();
/**
* 网站上传根目录
* @return
*/
public static String UPLOAD_ROOT = getUploadRoot();
private static String getRootPath() {
// TODO Auto-generated method stub
String root = Thread.currentThread().getContextClassLoader().getResource("").getPath();
File file = new File(root).getParentFile();
return file.getParent();
}
private static String getDirectorySeparator() {
// TODO Auto-generated method stub
return File.separator;
}
/**
* 设置网站上传根目录
* @return
*/
private static String getUploadRoot() {
// TODO Auto-generated method stub
String uploadPath = getRootPath()+PATH_DS+"static"+PATH_DS+"uploads";
File file = new File(uploadPath);
//判断文件夹是否存在,如果不存在,创建之
if ( !file.exists() && !file.isDirectory() ) {
try {
if ( file.mkdirs() ) {
System.out.println("Write OK.");
}else{
System.out.println("目录创建失败。");
}
} catch(SecurityException e) {
System.out.println("无法写入目录,相关信息:" + e.getMessage());
}
}
return file.getPath();
}
}
要获取时,只要引入该类,然后用以下方法即可:
//..省略Servlet 相关代码
//网站根目录
Stirng rootPath = ConstUtil.ROOT_PATH;
//web项目上传根目录
String uploadRoot = ConstUtil.UPLOAD_ROOT
//...