我做的是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