欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-07 15:40:45
...

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

1. 问题描述

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

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

2. 原因分析

idea文件目录结构:
properties读取,乱码相关问题解决过程
Tomcat打包后的目录结构:
properties读取,乱码相关问题解决过程
打包前后相对路径会有差异,采用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编码
properties读取,乱码相关问题解决过程

  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

相关标签: properties