我做的是ssh,但是在servlet中如果要去读文件,和在jsp中识别文件的路径不太一样。
我就是在servlet中读文件的,然后一直说路径不对。
后来终于在我老大的帮助下,他发给了我一个极其强悍的语句如下:
this.getClass().getClassLoader().getResource("/").getPath()+"conf/ftpconfig.properties"
或者用静态的类名:
UrgentFileUtil.class.getClassLoader().getResource("/").getPath()+"conf/ftpconfig.properties"
这句话在console打印一下,可以看到它的完整路径,是包括磁盘路径的。
打印出来如下:
/D:/workspace/yc/njpatientcare/huishan/WEB-INF/classes/conf/ftpconfig.properties
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
假设上面是真理的话,那下面的测试,让我大跌眼镜:
package sh.bs.home.testSpace;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
public class testSpacePath {
public static void main(String[] args) {
new testSpacePath().readFile();
}
/**
* getResource, 不用classLoader
*/
public void readFile(){
try{
// String test=testSpacePath.class.getResource("").toString();
//only getResource
String test=testSpacePath.class.getResource("").getPath();
System.out.println("only getResource="+test);
//getResource_classLoader_nullString
String getResource_classLoader_nullString=testSpacePath.class.getClassLoader().getResource("").getPath();
System.out.println("getResource_classLoader_nullString="+getResource_classLoader_nullString);
String getResource_classLoader_rootDir=testSpacePath.class.getClassLoader().getResource("/").getPath();
System.out.println("getResource_classLoader_rootDir="+getResource_classLoader_rootDir);
String testtext=test+"1.txt";
testtext = java.net.URLDecoder.decode(testtext, "UTF-8");
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(testtext)));
System.out.println("value="+br.readLine());
}catch(Exception ex){
ex.printStackTrace();
}
}
}
我一共试了三个方法,偏偏我们老大给的强悍的方法通不过。
所以这种关于路径的东西,还是多试试吧。
路径的原理就是根据编译过后的class路径去获得文件的路径。
一般常用的路径收集如下:
// System.out.println(System.getProperty("user.dir"));//important
// System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
// System.out.println(FTPFileUtil.class.getResource(""));
// System.out.println(FTPFileUtil.class.getResource("/"));
参考URL:http://laorer.iteye.com/blog/118088
http://topic.csdn.net/u/20110813/10/47635c98-e3f3-4b39-bf9d-79081c1f55f4.html