JSP、Java 获取当前绝对路径_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2228 | 回复: 0   主题: JSP、Java 获取当前绝对路径        下一篇 
    本主题由 koei123 于 2015-7-26 22:50:10 移动
mpsic_sam
注册用户
等级:新兵
经验:66
发帖:3
精华:0
注册:2012-7-27
状态:离线
发送短消息息给mpsic_sam 加好友    发送短消息息给mpsic_sam 发消息
发表于: IP:您无权察看 2015-7-15 10:46:14 | [全部帖] [楼主帖] 楼主

在eclipse或者其它.class文件没有被打包的情况下,使用如下语句可以获得.class文件的绝对路径:

String classFilePath = clazz.class.getResource("").getPath();


当.class文件被打进jar包之后,上面这条语句就要报错了。这时你能做的就是去获取.class文件所在的jar的绝对路径:

String jarFilePath = clazz.class.getProtectionDomain().getCodeSource().getLocation().getFile();
jarFilePath = java.net.URLDecoder.decode(jarFilePath, "UTF-8");
JSP:
String sLocalRealPath = application.getRealPath("/").replace('\\', '/');
if (sLocalRealPath != null && !sLocalRealPath.endsWith("/"))
{
      sLocalRealPath.concat("/"); //避免 WebLogic 和 WebSphere 不一致
}
Java:
String sClassRealPath = new String("");
//前面会多返回一个"/", 例如  /D:/test/WEB-INF/, 奇怪, 所以用 substring()
sClassRealPath = this.getClass().getResource("/").getPath().substring(1).replaceAll("//", "/");
System.out.println(sClassRealPath);


1.如何获得当前文件路径
常用:
(1).Test.class.getResource("")
得到的是当前类FileTest.class文件的URI目录。不包括自己!
(2).Test.class.getResource("/")
得到的是当前的classpath的绝对URI路径。
(3).Thread.currentThread().getContextClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
(4).Test.class.getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径。
(5).ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径。
尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径,后面可以看出得出结果五花八门。
(6) new File("").getAbsolutePath()也可用。

2.Web服务器
(1).Tomcat
在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin
(2).Resin
不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下
(3).如何读文件
使用ServletContext.getResourceAsStream()就可以
(4).获得文件真实路径

String file_real_path=ServletContext.getRealPath("mypath/filename");?


不建议使用request.getRealPath("/");
3.文件操作的类,不建议使用,可以使用commons io类

--转自 北京联动北方科技有限公司

该贴由koei123转至本版2015-7-26 22:50:10



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论