Java读取properties文件工具类并解决控制台中文乱码

1、建立properts文件(error.message.properties)

HTTP201= 请求成功并且服务器创建了新的资源

 

2、在spring-mvc.xml文件(applicationContext-mvc.xml)中配置properties工具类路径及读取properties文件的路径

<bean id="propertyConfigurer" class="com.yjlc.platform.utils.PropertyConfigurer"  >
   <property name="ignoreUnresolvablePlaceholders" value="true"/>
   <property name="ignoreResourceNotFound" value="true"/>
   <property name="locations">
      <list>
         <value>classpath:error.message.properties</value>
      </list>
   </property>
   <property name="fileEncoding" value="UTF-8"></property>
</bean>

  

3、建立properts读取工具类

package com.yjlc.platform.utils;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import java.util.Properties;

/**
 * --------------------------------------------------------------
 * CopyRights(c)2018,YJLC
 * All Rights Reserved
 * <p>
 * FileName: PropertyConfigurer.java
 * Description:错误信息文件读取工具类
 * Author: cyb
 * CreateDate: 2019-01-18
 * --------------------------------------------------------------
 */
public class PropertyConfigurer extends PropertyPlaceholderConfigurer {
    private Properties props;       // 存取properties配置文件key-value结果

    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props)
            throws BeansException {
        super.processProperties(beanFactoryToProcess, props);
        this.props = props;

    }
//输入配置文件中的key 获取对应的值
    public String getProperty(String key){
        return  new String(props.getProperty(key));

    }

    public String getProperty(String key, String defaultValue) {
        return this.props.getProperty(key, defaultValue);
    }

    public Object setProperty(String key, String value) {
        return this.props.setProperty(key, value);
    }
}

  

4、建立对应的service及实现类

(1) Service接口(GetMessageInfoService )

package com.yjlc.platform.upgrade.common.service;

import java.io.UnsupportedEncodingException;

/**
 * --------------------------------------------------------------
 * CopyRights(c)2018,YJLC
 * All Rights Reserved
 * <p>
 * FileName: GetMessageInfoService.java
 * Description:获取错误信息service
 * Author: cyb
 * CreateDate: 2019-01-18
 * --------------------------------------------------------------
 */
public interface GetMessageInfoService {

    /**
     * 第四种实现方式获取properties文件中指定key的value
     *
     * @param key
     *
     * @return
     */
    String getProperyByFourthWay(String key) throws UnsupportedEncodingException;

    /**
     * 第四种实现方式获取properties文件中指定key的value
     *
     * @param key
     *
     * @param defaultValue
     *
     * @return
     */
    String getProperyByFourthWay(String key, String defaultValue);

}

  

Service实现类

package com.yjlc.platform.upgrade.common.service.impl;

import com.yjlc.platform.upgrade.common.service.GetMessageInfoService;
import com.yjlc.platform.utils.PropertyConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * --------------------------------------------------------------
 * CopyRights(c)2018,YJLC
 * All Rights Reserved
 * <p>
 * FileName: PropertiesServiceImpl.java
 * Description:获取错误信息service实现类
 * Author: cyb
 * CreateDate: 2019-01-18
 * --------------------------------------------------------------
 */
@Service
public class GetMessageInfoServiceImpl implements GetMessageInfoService {

    @Autowired
    private PropertyConfigurer pc;

    @Override
    public String getProperyByFourthWay(String key) {
        return pc.getProperty(key);
    }

    @Override
    public String getProperyByFourthWay(String key, String defaultValue) {
        return pc.getProperty(key, defaultValue);
    }

}

  

5、调用测试

@Controller
@RequestMapping("/upInformation/")
public class UPInformationController {
    @Autowired
    GetMessageInfoService getMessageInfoService;

@RequestMapping("forwardInfo")
@ResponseBody
public Map<String,Object> forwardInfo(UPInformationComment informationComment,String status) throws UnsupportedEncodingException {
    Map<String,Object> map = new HashMap<>();

    String value= getMessageInfoService.getProperyByFourthWay("HTTP201");

}

}

  

6、控制台打印中文乱码问题解决

找到intellij idea安装目录,bin文件夹下面idea64.exe.vmoptions和idea.exe.vmoptions这两个文件,分别在这两个文件中添加:-Dfile.encoding=UTF-8
第二步:找到intellij idea的file---settings---Editor---FileEncodings的GlobalEncoding和ProjectEncoding和Default encoding for properties都配置成UTF-8
第三步:在部署Tomcat的VM options项中添加:-Dfile.encoding=UTF-8


第四步:重启Intellij idea即可解决乱码问题(一定要关闭idea重新打开)

此篇博客,本人参照了以下博主的内容,再根据自己的需求进行了整合,若需要查看详细内容,大家可以前往以下链接查看:https://www.cnblogs.com/hafiz/p/5876243.html#commentform

技术在于交流!

原文地址:https://www.cnblogs.com/chenyuanbo/p/10291186.html

时间: 2024-10-11 13:08:10

Java读取properties文件工具类并解决控制台中文乱码的相关文章

读取properties文件工具类

package com.paic.pad.info.common.utils; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; /** *@Title: *@Description:读取系统配置文件的工具类 */ public final class SystemResourceUtil { public static final String ENV_PROPERTY_KEY="a

java读取properties的工具类PropertiesUtil

1 package org.properties.util; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.OutputStream; 8 import java.util.Properties; 9 10 11 public class Prope

java读取properties文件工具

public class PropertiesUtil { public static String get(String filePath, String key) { String val = null; Properties prop = new Properties(); InputStream in = null; in = PropertiesUtil.class.getClassLoader().getResourceAsStream(filePath); try { prop.l

java读取.txt文件工具类FileUtiles

public class FileUtils { private static final String ENCODING = "UTF-8";//编码方式 /** * 获取文件的行 * * @param fileName * 文件名称 * @return List<String> */ public static String getContentByLine(String fileName) { StringBuffer lines = new StringBuffer

java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题

//文件上传 public static boolean uploadToFTP(String url,int port,String username,String password,String path,String filename,InputStream input) { boolean success=false; FTPClient ftp=new FTPClient();//org.apache.commons.net.ftp try{ if(port>-1) { ftp.con

读取Config文件工具类 PropertiesConfig.java

package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; /** * 读取Config文件工具类 * @version 1.0 * @since JDK 1.6 */ public class PropertiesConfig { /** * 获取整个配置文件中的属性 *

Java读取Properties文件的六种方法

使用J2SE API读取Properties文件的六种方法 1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2.使用java.util.ResourceBundle类的getBundle()方法 示例: ResourceBundle rb

转载:java基础学习总结——java读取properties文件总结

java基础学习总结--java读取properties文件总结 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下: 1.1.项目的

Java读取.properties文件

例1: 创建一个config文件夹 config文件夹中有一个Properties.properties文件 内容为: capitalLetter=ABCDE smallLetter=abcde 注意:config文件夹与包含Test类的包为同一级 import java.io.IOException; import java.util.Properties; public class Test { public static void main(String[] args) { Propert