java读写properties文件和xml文件,解决中文乱码问题

文章目录

  • 前言
  • 一、properties文件
    • 1.1properties格式介绍
    • 1.2读取项目resource/templates下面properties并处理中文乱码问题
    • 1.3读取本地properties并处理中文乱码问题
    • 1.4修改properties文件
  • 二、XML文件
    • 2.1xml文件格式
    • 2.2读取xml文件
    • 2.3写xml文件


前言

在开发当中我们经常需要用到配置文件,我们可以在配置文件中很方便的设置需要进行修改和配置的参数值,有时候我们本地开发和生产环境中有些参数也不一样,比如数据库IP和账号密码等、要读取的文件夹路径、日志备份的时间和周期等等,有些人可能会说直接将这些值定义为final变量不久可以了吗?这样的缺点是我们将项目部署到生产环境中时还要重新调整Java代码,然后重新生成jar包或者war包,而定义到配置文件中可以直接打开jar进行修改,我们在配置文件中设置这些参数就很方便后续进行修改。
在java中常用的配置文件有properties、xml和txt,本文就来介绍一下这三种配置文件的读写方法。


一、properties文件

1.1properties格式介绍

properties文件是一个文本文件,以“键=值”的方式书写一个属性的配置信息。
在这里插入图片描述
从上面的类结构图可以看出,它继承了Hashtable并实现了Map接口
properties的属性配置键值前后的空格在解析时候会被忽略。
注 释:前面加上#号
在这里插入图片描述

1.2读取项目resource/templates下面properties并处理中文乱码问题

读取properties文件,需要注意的是如果读取出的值含有中文的话会出现乱码的问题,需要再进行处理。
在这里插入图片描述
该properties文件放在项目resource/templates下面
代码如下:

    //读取properties资源文件public static String getProperties() {Properties properties = new Properties();try {InputStream resourceAsStream = SysSetParaEditController.class.getClassLoader().getResourceAsStream("getGKCX.properties");properties.load(resourceAsStream);String head = properties.getProperty("head");String content = properties.getProperty("content");String body = properties.getProperty("body");String function = properties.getProperty("function");String arg = properties.getProperty("arg");String functionend = properties.getProperty("functionend");String bodyend = properties.getProperty("bodyend");String contentend = properties.getProperty("contentend");System.out.println(head + "-->" + head);System.out.println(content + "-->" + content);System.out.println(body + "-->" + body);System.out.println(function + "-->" + function);System.out.println(arg + "-->" + arg);System.out.println(functionend + "-->" + functionend);System.out.println(bodyend + "-->" + bodyend);System.out.println(contentend + "-->" + contentend);resourceAsStream.close(); //关闭流}catch (IOException e) {e.printStackTrace();}//处理中文乱码String imgFolder = properties.getProperty("imgFolder");try {imgFolder = new String(imgFolder.getBytes("ISO-8859-1"), "GBK"); // 处理中文乱码}catch (UnsupportedEncodingException e) {e.printStackTrace();}System.out.println(imgFolder);return imgFolder;}

1.3读取本地properties并处理中文乱码问题

如果properties文件在本地的话,可以这样进行读取:
代码如下:

    //读取properties资源文件public static String getProperties() {Properties pro = new Properties();int maxTotal = 0;int maxIdel = 0;String host = null;int port = 0;try {pro.load(new FileReader("D:\\sun\\getGKCX.properties"));String imgFolder = properties.getProperty("imgFolder");imgFolder = new String(imgFolder.getBytes("ISO-8859-1"), "GBK"); // 处理中文乱码} catch (IOException e) {e.printStackTrace();}System.out.println(imgFolder);return imgFolder;}

1.4修改properties文件

    public static void writePropertiesFile(String filename){Properties properties = new Properties();try{//方法一:使用FileWriter properties.setProperty("imgFolder", "D:\\sun");//创建字节输出流/字符输出流,构造方法中绑定要输出的目的地FileWriter fw=new FileWriter("D://a.txt");//使用Properties集合中的方法store,把集合中的临时数据,持久写入到硬盘中properties.store(fw, "save data");//释放资源fw.close();//方法二:使用OutputStream OutputStream outputStream = new FileOutputStream(filename);properties.setProperty("imgFolder", "D:\\sun\\img");properties.store(outputStream, "author: sun");outputStream.close();}catch (IOException e){e.printStackTrace();}}

二、XML文件

2.1xml文件格式

ML 指可扩展标记语言(EXtensible Markup Language),是一种标记语言,很类似 HTML。
在XML中,你可以拓展发明自己的标签,XML没有预定义的标签,XML允许创作者定义或设计自己的标签和文档结构
基本结构:
XML文档的后缀名 .xml
XML的第一行必须定义文档声明
在项目中经常见到的xml文件那就是pom.xml,相信大家对这个一定都不陌生吧!
还有mybatis使用的mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--<environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1/table?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true&amp;useSSL=false&amp;severTimezone=GMT%2B8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments>--><mappers><mapper resource="com/sun/server/mapper/xml/TScdLogMapper.xml"/><mapper resource="com/sun/server/mapper/xml/TScdOperateMapper.xml"/><mapper resource="com/sun/server/mapper/xml/TScdOperatePartsMapper.xml"/><mapper resource="com/sun/server/mapper/xml/TSysParainfoMapper.xml"/></mappers>
</configuration>

2.2读取xml文件

代码如下(示例):

public static void readPropertiesFileFromXML(String filename){Properties properties = new Properties();try{InputStream inputStream = new FileInputStream(filename);properties.loadFromXML(inputStream);inputStream.close();}catch (IOException e){e.printStackTrace();}String imgFolder = properties.getProperty("imgFolder");; //XML中的中文不用处理乱码,正常显示}

2.3写xml文件

代码如下(示例):

//写资源文件到XML文件,含中文  public static void writePropertiesFileToXML(String filename){Properties properties = new Properties();try{OutputStream outputStream = new FileOutputStream(filename);properties.setProperty("imgFolder", "D:\\sun\\img");properties.storeToXML(outputStream, "author: sun");outputStream.close();}catch (IOException e){e.printStackTrace();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库——多表操作

文章目录 前言多表关系一对一关系一对多/多对一关系多对多关系 外键约束创建外键约束插入数据删除带有外键约束的表的数据删除外键约束 多表联合查询数据准备交叉连接查询内连接查询外连接查询左外连接查询右外连接查询满外连接查询 子查询子查询关键字ALL 关键字ANY 和 SOME 关…

Nacos 抽取公共配置

文章目录 创建一个公共配置文件其他配置文件引用springboot配置文件 创建一个公共配置文件 其他配置文件引用 ${变量} springboot配置文件 spring:cloud:nacos:discovery:server-addr: current.ip:8848namespace: word_register_proconfig:server-addr: current.ip:8848auto-r…

大模型时代下,算法工程师该何去何从?

目录 一、大模型时代的罪与罚1.1、快速演进的大模型技术1.2、模型表现出的惊人创造力1.3、大模型AI对算法工程师的威胁性 二、算法工程师的破与发2.1、破——大模型时代给算法工程师带来的新机遇2.2、发——算法工程师如何适应大模型时代的变革 三、大模型时代下人才发展洞察 大…

spring.config.location 手动指定配置文件文件

–spring.config.locationD:\javaproject\bangsun\ds-admin\ds-oper-mgr\src\main\resources\application.yml

IOCP简单了解

1.IOCP是什么 IOCP是Input/Output Completion Ports的简称&#xff0c;中文翻译为完成端口&#xff0c;完成是应用程序向系统发起一个IO操作&#xff0c;系统会在操作结束后&#xff0c;将IO操作完成结果通知应用程序&#xff0c;端口指的是机制 2.重叠IO&#xff08;Overlappe…

代码调试2:coco数据集生成深度图

代码调试:coco数据集生成深度图 作者:安静到无声 个人主页 问题1:图片存在异常,跳过不处理 在获取深度图的时候,直接执代码,会产生以下错误:RuntimeError和ValueError。 因此我重新修改了代码,如果出现以下两种错误,则执行下一次循环,代码如下: 修改之后代码可以…

二叉树的相关题目

目录 1、根据二叉树创建字符串 2、二叉树的层序遍历 3、二叉树的最近公共祖先 4、搜索二叉树与双向链表 5、从前序与中序遍历序列构造二叉树 6、 从中序与后序遍历序列构造二叉树 7、二叉树的前序遍历&#xff08;非递归实现&#xff09; 8、二叉树的中序遍历&#xff08…

spring — Spring Security 5.7与6.0差异性对比

1. spring security Spring Security 是一个提供身份验证、授权和针对常见攻击保护的框架。 凭借对保护命令式和反应式应用程序的一流支持&#xff0c;它成为基于Spring的标准安全框架。 Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都…

宇凡微2.4g遥控船开发方案,采用合封芯片

2.4GHz遥控船的开发方案是一个有趣且具有挑战性的项目。这样的遥控船可以通过无线2.4GHz频率进行远程控制&#xff0c;让用户在池塘或湖泊上畅游。以下是一个简要的2.4GHz遥控船开发方案&#xff1a; 基本构想如下 mcu驱动两个小电机&#xff0c;小电机上安装两个螺旋桨&#…

在使用Python爬虫时遇到503 Service Unavailable错误解决办法汇总

在进行Python爬虫的过程中&#xff0c;有时会遇到503 Service Unavailable错误&#xff0c;这意味着所请求的服务不可用&#xff0c;无法获取所需的数据。为了解决这个常见的问题&#xff0c;本文将提供一些解决办法&#xff0c;希望能提供实战价值&#xff0c;让爬虫任务顺利完…

Docker中gitlab以及gitlab-runner的安装与使用

1、本文主要讲述如何使用Docker安装gitlab以及gitlab-runner&#xff0c;并且会讲述gitlab-runner如何使用 2、gitlab部分不需要修改过多的配置即可使用&#xff0c;本文未讲述https配置&#xff0c;如有需求&#xff0c;可自行百度 3、Docker如何安装可以自行百度 一、Docker安…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

【JVM】(二)深入理解Java类加载机制与双亲委派模型

文章目录 前言一、类加载过程1.1 加载&#xff08;Loading&#xff09;1.2 验证&#xff08;Verification&#xff09;1.3 准备&#xff08;Preparation&#xff09;1.4 解析&#xff08;Resolution&#xff09;1.5 初始化&#xff08;Initialization&#xff09; 二、双亲委派…

数字化采购:提升效率、优化供应链的新趋势

随着信息技术的快速发展&#xff0c;数字化采购正成为企业追求效率和优化供应链的新趋势。数字化采购是利用数字技术和互联网平台&#xff0c;实现采购流程的自动化和在线化。本文将围绕数字化采购的应用场景&#xff0c;探讨其在采购环节中带来的效益与优势。 一、在线供应商…

分布式限流方案及实现

优质博文&#xff1a;IT-BLOG-CN 一、限流的作用和意义 限流是对高并发访问进行限制&#xff0c;限速的过程。通过限流来限制资源&#xff0c;可以提高系统的稳定性和可靠性&#xff0c;控制系统的负载&#xff0c;削峰填谷&#xff0c;保证服务质量。 服务限流后的常见处理…

重磅!EBImage包:为何如此火爆?它的图像处理到底有何不可思议之处?

一、简介 1.1 EBImage包简介 EBImage包是一个广受欢迎的用于图像处理和分析的R语言包。它提供了一套全面而强大的功能&#xff0c;支持多种图像格式的读取和写入&#xff0c;处理多维图像数据&#xff0c;并提供了各种先进的图像处理算法、特征提取和测量函数。 1.2 EBImage爆火…

DAY1,C高级(命令,Linux的文件系统,软、硬链接文件)

1.创建链接文件&#xff1b; 文件系统中的每个文件都与唯一的 inode 相关联&#xff0c;inode 存储了文件的元数据和数据块的地址&#xff0c;文件名与 inode 之间的链接关系称为硬链接或软链接。 硬链接文件的创建&#xff1a; ln 被链接文件的绝对路径 硬链接文件的绝对…

nsqd的架构及源码分析

文章目录 一 nsq的整体代码结构 二 回顾nsq的整体架构图 三 nsqd进程的作用 四 nsqd启动流程的源码分析 五 本篇博客总结 在博客 nsq整体架构及各个部件作用详解_YZF_Kevin的博客-CSDN博客 中我们讲了nsq的整体框架&#xff0c;各个部件的大致作用。如果没看过的&…

论文笔记——Influence Maximization in Undirected Networks

Influence Maximization in Undirected Networks ContributionMotivationPreliminariesNotations Main resultsReduction to Balanced Optimal InstancesProving Theorem 3.1 for Balanced Optimal Instances Contribution 好久没发paper笔记了&#xff0c;这篇比较偏理论&…

pytorch 中 view 和reshape的区别

在 PyTorch&#xff08;一个流行的深度学习框架&#xff09;中&#xff0c; reshape 和 view 都是用于改变张量&#xff08;tensor&#xff09;形状的方法&#xff0c;但它们在实现方式和使用上有一些区别。下面是它们之间的主要区别&#xff1a; 实现方式&#xff1a; reshap…