java 读取文件路径空格和中文的处理
2013-10-24 18:50
253 查看
应用部署时,发生文件读取错误。发现是部署路径中含有空格的文件夹名。
然后把应用服务器位置迁移了。
从网上找到如下方案:
1, TestURL().class.getResource("").getPath()或TestURL().class.getResource("").getFile()获得的路径,不能被FileReader()和FileWriter()直接应用。
原因是URL对空格,特殊字符(%,#,[]等)和中文进行了编码处理。
例如:空格变为%20。
有解决方法(1),使用repaceAll("%20",' ')替换后,只能解决空格问题。但是路径中包含%和中文就不行了。
有解决方法(2),使用URLDecoder.decode(str,"UTF-8")解码,但是只能解决一部分,若路径中含有+,也是不能解决的,原因是URL并不是完全用URLEncoder.encode(str,"UTF-8")编码的,+号被解码后,却变成了空格。
方法(3),可以解决所有的问题,用TestURL().class.getResource("").toURI().getPath(),但是需要处理URISyntaxException异常,比较麻烦点。
然后把应用服务器位置迁移了。
从网上找到如下方案:
1, TestURL().class.getResource("").getPath()或TestURL().class.getResource("").getFile()获得的路径,不能被FileReader()和FileWriter()直接应用。
原因是URL对空格,特殊字符(%,#,[]等)和中文进行了编码处理。
例如:空格变为%20。
有解决方法(1),使用repaceAll("%20",' ')替换后,只能解决空格问题。但是路径中包含%和中文就不行了。
有解决方法(2),使用URLDecoder.decode(str,"UTF-8")解码,但是只能解决一部分,若路径中含有+,也是不能解决的,原因是URL并不是完全用URLEncoder.encode(str,"UTF-8")编码的,+号被解码后,却变成了空格。
方法(3),可以解决所有的问题,用TestURL().class.getResource("").toURI().getPath(),但是需要处理URISyntaxException异常,比较麻烦点。
相关文章推荐
- java:日期相关Date,Calendar,SimpleDateFormat
- 深入java SocketInputStream看read具体如何操作
- 【java源码】jdbc实现增查删改<Mysql>
- MyEclipse开发WebService教程
- xml与java双向映射
- java读取项目中的文件
- 如何在Eclipse CDT中编译含有多个main函数的项目
- 如何在Eclipse CDT中编译含有多个main函数的项目
- struts2+dao实现增删查改
- JDK自带线程池使用配置
- eclipse中设置代码字体
- java正则表达式测试
- Spring MVC学习--依赖注入
- JAVA解析JSON相关
- 5分钟学会十进制转换成二进制的快速口算方法 & Java输出二进制的代码
- java中的Class.forName的作用
- 搭建SpringSide示例showcase的eclipse运行环境
- Eclipse setting Java code style and codetemplate
- Ajax返回Json在Java中的实现
- java中byte数据转换为c#的byte数据