最近在做上传或文件读取的时候,常常被取一些文件的相对路径或者绝对路径所搞昏迷了,特别是InputStreamReader(Class.getResourceAsStream("文件名或者带路径的文件名")),我确实是被它搞郁闷了,无论怎么测也找不到我要找的文件(我把每个下都放了一个我要读的文件,可就是找不到),而且也没有方法能够把它的路径打印出来来看到底getResourceAsStream找的是个什么路径。后来无奈,找到FileReader(filepath);然而这家伙是读文件的绝对路径比较爽的,要它读相对路径也可以,但是如何判断项目的根路径又让人挺郁闷的,而且当项目打包部署的时候对应读取的项目根路径好像会改变,比如原来读到(/WEB-INF,打包部署后会读到/WEB-INF/classes/)而导致文件又读不到了。于是想自己写个读取项目根目录的方法,这样无论怎么部署,有了项目的根目录,我就能轻而易举的定位到我的资源了,我知道java中肯定还有很多其他的方法能够定位一个资源,所以希望大侠们能够多多指点。一下是我写的寻找根目录的方法,希望对和我一样的小菜鸟们有点帮助^_^;
public
static
String getUrlRootPath()
...
{
UploadFile upFile = new UploadFile();
java.net.URL url =upFile.getClass().getResource("UploadFile.class");
String absolutePath = url.getPath();
String urlRoot="";
int pos=absolutePath.indexOf("WEB-INF");
if(pos!=-1)
urlRoot=absolutePath.substring(0,pos);
else
urlRoot=absolutePath.substring(0,3);
if(urlRoot.substring(urlRoot.length()-1,urlRoot.length()).equals(System.getProperty("file.separator"))||urlRoot.substring(urlRoot.length()-1,urlRoot.length()).equals("/"))
...{
urlRoot=urlRoot.substring(0,urlRoot.length()-1);
}
return urlRoot.substring(1,urlRoot.length());//除去路径最开头的' /'
}
UploadFile upFile = new UploadFile();
java.net.URL url =upFile.getClass().getResource("UploadFile.class");
String absolutePath = url.getPath();
String urlRoot="";
int pos=absolutePath.indexOf("WEB-INF");
if(pos!=-1)
urlRoot=absolutePath.substring(0,pos);
else
urlRoot=absolutePath.substring(0,3);
if(urlRoot.substring(urlRoot.length()-1,urlRoot.length()).equals(System.getProperty("file.separator"))||urlRoot.substring(urlRoot.length()-1,urlRoot.length()).equals("/"))
...{
urlRoot=urlRoot.substring(0,urlRoot.length()-1);
}
return urlRoot.substring(1,urlRoot.length());//除去路径最开头的' /'
}
以后我也会在该贴中继续的贴出上传附件的方法,和计算核对附件大小的方法。希望能对大家有点作用。