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

本文介绍了在Java中读取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.youkuaiyun.com/suyu_yuan/article/details/52733418

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值