需要upload的时候指定上载路径,当然路径不能写成绝对路径了。
还不太了解java中相对路径的写法,所以找了很多种方法,试了很多方法后最后成功了,把经验写下来。
和linux中一样 "../"表示上层路径 "./"表示当前路径
我要上载的路径在 "/webContent/res/upload/"这个文件夹,开始我用"../../res/upload"来实现,但是后来发现这种方法是针对
用户当前路径的上层路径,虽然可以用这种方法实现上载,但是没有可移植性,到其他机器上就会出错了,这点很关键,不小心就
会弄错了。
之后用的是System.getProperty("user.dir")返回相对于当前用户目录的相对路径。其实效果跟上面的方法是一样的,不符合
我的要求。
后来又找了一种方法 getResource和getResourceAsStream
ClassLoader提供了两个方法用于从装载的类路径中取得资源:
public URL getResource(String name);
public InputStream getResourceAsStream(String name);
这里name是资源的类路径,它是相对于“/”根路径下的位置。getResource得到的是一个URL对象来定位资源,而
getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。我用的是
classname.class.getResource("/")来得到项目的根路径的,但是这样写并不能实现指向我所需要的指定盘符下的文件夹的目
的。
之后在csdn的一篇帖子里找到了办法,帖子是《求助啊:我在WEB.xml中配置的servlet需要传配置文件的相对路径,老是
出错啊? [已结贴,结贴人:hackler]》
http://topic.csdn.net/u/20070307/13/503c789c-8939-4e6a-8613-effbc05729d3.html
通过getServlet().getServletContext().getRealPath("")可以得到目录的绝对路径
再根据我的具体情况改成getServlet().getServletContext().getRealPath("/res/upload/")就可以实现了。