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文件目录结构:
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编码
- 读取文件时采用如下方式,指定文件类型:
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读取,乱码相关问题解决过程
-
cx_Oracle读取Oracle数据库中文乱码问题解决
-
Python实现的json文件读取及中文乱码显示问题解决方法
-
cx_Oracle读取Oracle数据库中文乱码问题解决
-
PHP基于curl post实现发送url及相关中文乱码问题解决方法
-
java读取mysql出现中文字段乱码问题解决
-
探讨PHP获取Oracle数据乱码的相关问题解决办法
-
关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了) JavaLinuxWindowsSpringOS
-
关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了) JavaLinuxWindowsSpringOS
-
从存储过程中读取相关信息