Java路径问题解决方案汇集

上传人:人*** 文档编号:558883118 上传时间:2023-03-17 格式:DOCX 页数:2 大小:10.95KB
返回 下载 相关 举报
Java路径问题解决方案汇集_第1页
第1页 / 共2页
Java路径问题解决方案汇集_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《Java路径问题解决方案汇集》由会员分享,可在线阅读,更多相关《Java路径问题解决方案汇集(2页珍藏版)》请在金锄头文库上搜索。

1、最近查看了网上很多关于路径问题资料大概总结了一下:Java路径中的空格问题1、URLTest.class.getResource(/).getPath();URLTest.class.getResource(/).getFile();URLTest.class.getClassLoader().getResource().getPath();Thread.currentThread().getContextClassLoader().getResource().getPath()等 多种相似方式获 得的路径,不能被FileReader()和FileWriter()直接应用,原因是URL对空格,

2、特殊字符(,#, 等)和中文进行了编码处理。如果文件中URLTest.class.getResource(/).getPath()必须以/开头然 后再加文件名,而 URLTest.class.getClassLoader().getResource().getPath ()不用加/可以直接添 加文件名。路径中包含空格时,如果空格变为”20 ”有如下处理方法:1) 使用repaceAll(%20,)替换,但只能解决空格问题,如果路径中包含其他特殊字符和中文就 不能解决问题。2) 使用URLDecoder.decode(str,UTF-8解码,但是只能解决一部分,若路径中含有+,也是不能 解决的,

3、原因是URL并不是完全用URLEncoder.encode(str,UTF-8编码的,+号被解码后,则变 成空格。3) 解决所有的问题,用 URLTest.class.getClassLoader().getResource().toURI().getPath();但是需要 处理URISyntaxException异常,比较麻烦一些。2、new URL();的参数可以为正确的URI,或者为URI格式的字符串;若字符串是非完整的URI 格式,则创建失败。.URI返回的路径中的空格以“空格”的形式出现方法为 Thread.currentThread().getContextClassLoader(

4、).getResource().toURI().getPath ()但是 Thread.currentThread().getContextClassLoader().getResource().toURI().toString ()则会以“ 20的 形式出现。.URL返回的一切路径中的空格都是以“20”的形式出现。URL/URI返回的路 径分隔符都是“/”(控制台输出”/”)。3、new File(String filePath);接受正确URI格式的参数和带空格”(非%20)的正确相对/绝对字 符串路径,否则即使给的路径是正确的也会出现找不到文件的异常。File返回的路径分隔符都 为“”(

5、控制台输出),对于存在的文件返回的路径字符串,空格都以”空格”出现,而不存在的 路径new出的file, getPath ()返回的路径中的空格,仍是new File(String filePath)的参数中原 有的形式,即若filePath中是空格的getPat()返回的仍是空格,是“20”的仍是“20”File.toURI() 会将file的路径名中的“空格”转化为“20”,然后在路径前加protocol: file:/,而File.toURL() 只会在file路径 前简单的加上protocol: file:/,而不会将“空格”转化为“20”,原来的无论是 “空格”还是“20”都只会原样

6、保留。实际使用中遇到的问题总结如下:1、相对路径(即相对于当前用户目录的相对路径)均可通过以下方式获得(不论是一般的java项 目还是 web 项目)String relativelyPath=System.getProperty(user.dir);对于一般的 java 项目中 的文件是相对于项目的根目录,而对于web项目中的文件路径,可能是服务器的某个路径,同 时不同的web服务器也不同(tomcat是相对于tomcat安装目录bin)。为此,个人认为,在web 项目中,最好不要使用“相对于当前用户目录的相对路径”。然而默认情况下,java.io包中的类 总是根据当前用户目录来分析相对路径

7、名。此目录由系统属性user.dir指定,通常是Java虚 拟机的调用目录。这就是说,在使用java.io包中的类时,最好不要使用相对路径。否则,虽然 在SE程序中可能还算正常,但是到了 EE程序中,可能会出现问题。2、web项目根目录获取1) 建立一个servlet,在其init()方法中添加如下代码ServletContext context = this.getServletContext();String strs = context.getRealPath(/);2) 利用httpServletRequest,得到相应的项目路径String pathUrl = request.getSession().getServletContext().getRealPath(/);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号