properties读取,乱码相关问题解决过程

properties读取,乱码相关问题解决过程

1. 问题描述

采用相对路径读取properties文件,报异常文件未找到,采用绝对路径,可以正常读取

Properties pro = new Properties();
FileInputStream in = new FileInputStream("inittable.properties");
pro.load(in);

2. 原因分析

idea文件目录结构:
这里写图片描述
Tomcat打包后的目录结构:
这里写图片描述
打包前后相对路径会有差异,采用1中写法会导致无法找文件

3. 相对路径与绝对路径

  • 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:\xyz\test.txt代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个URL绝对路径。

  • 相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,”/”代表Web应用的根目录。和物理路径的相对表示,例如:”./” 代表当前目录,”../”代表上级目录。这种类似的表示,也是属于相对路径。

默认情况下new File(“/”)代表的目录为:System.getProperty(“user.dir”),在tomcat中,在类中输出System.getProperty(“user.dir”);显示的是%Tomcat_Home%/bin,因此解决该问题的写法为:

Properties pro = new Properties();
prop.load(this.getClass().getResourceAsStream("/inittable.properties"));

getResourceAsStream/getResource均可读取到该文件,可以正确读取到该文件

4. 其他相关路径含义

  • 服务器端地址:服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://127.0.0.1/webapp/的。
  • 客户端的地址:所有的html页面中的相对地址都是相对于服务器根目录(http://127.0.0.1/)的,而不是(根目录下的该Web应用的目录)http://127.0.0.1/webapp/的。

5. 读取properties中文乱码解决方法

properties默认编码为GBK编码,输入中文会出现乱码问题。解决方法:
1. 设置idea的默认properties文件编码为utf-8编码
这里写图片描述

  1. 读取文件时采用如下方式,指定文件类型:
 Properties initTable = new Properties();
 initTable.load(new InputStreamReader(this.getClass().getResourceAsStream("/inittable.properties"),"utf-8")); 

6. 参考资料

http://www.cnblogs.com/leehongee/p/3324062.html
http://blog.csdn.net/suyu_yuan/article/details/52733418

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值