最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java讀取Properties文件時(shí)保持順序的解決過程

 更新時(shí)間:2025年11月10日 08:54:57   作者:大大怪~將軍  
文章講述了解決Java中Properties文件讀取時(shí)中文亂碼問題的幾種方法,包括重寫Properties的put方法、拓展記錄解決ResourceBundle讀取properties中文亂碼問題等

1、解決方法

    Properties props = new LinkedProperties();
                try (InputStream is = resource.getInputStream()) {
                    props.load(new InputStreamReader(is, StandardCharsets.UTF_8)); // 保證UTF-8讀取
                }
                Map<String, String> messages = new LinkedHashMap<>();
                for (String key : props.stringPropertyNames()) {
                    messages.put(key, props.getProperty(key));
                }

2、重寫Properties 的put方法

import org.jetbrains.annotations.NotNull;

import java.util.*;

/**
 * 重寫Properties 的put 方法,為了讓 LinkedProperties 讀取的國際化的文件內(nèi)容順序顯示
 */
public class LinkedProperties extends Properties {

    private static final long serialVersionUID = 1L;

    private final LinkedHashSet<Object> keys = new LinkedHashSet<>();

    @Override
    public synchronized Object put(Object key, Object value) {
        keys.add(key);
        return super.put(key, value);
    }

    @Override
    public Set<String> stringPropertyNames() {
        Set<String> set = new LinkedHashSet<>();
        for (Object obj : keys) {
            set.add((String) obj);
        }
        return set;
    }

    @NotNull
    @Override
    public Set<Object> keySet() {
        return this.keys;
    }

    @Override
    public Enumeration<Object> keys() {
        return Collections.enumeration(keys);
    }
}

3、拓展記錄

解決 ResourceBundle 讀取properties 中文亂碼問題

import org.jetbrains.annotations.NotNull;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.*;

public class UTF8Control extends ResourceBundle.Control {
    @Override
    public ResourceBundle newBundle(String baseName, Locale locale, String format,
                                    ClassLoader loader, boolean reload)
            throws IllegalAccessException, InstantiationException, IOException {
        String bundleName = toBundleName(baseName, locale);
        String resourceName = toResourceName(bundleName, "properties");

        try (InputStream stream = loader.getResourceAsStream(resourceName)) {
            if (stream == null) return null;

            try (InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) {
                Properties props = new Properties();
                props.load(reader);

                return new ResourceBundle() {
                    @Override
                    protected Object handleGetObject(@NotNull String key) {
                        return props.getProperty(key);
                    }

                    @NotNull
                    @Override
                    public Enumeration<String> getKeys() {
                        return Collections.enumeration(props.stringPropertyNames());
                    }
                };
            }
        }
    }
}

4、使用

//        ResourceBundle bundle = ResourceBundle.getBundle(baseName, new UTF8Control());
//        Map<String, String> messages = new ConcurrentHashMap<>();
//        for (String key : bundle.keySet()) {
//            messages.put(key, bundle.getString(key));
//        }
//        cachedMessages.put(bundle.getLocale(), messages);

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java之SpringCloud nocos注冊中心講解

    Java之SpringCloud nocos注冊中心講解

    這篇文章主要介紹了Java之SpringCloud nocos注冊中心講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java中Object類常用的12個(gè)方法(小結(jié))

    Java中Object類常用的12個(gè)方法(小結(jié))

    Java 中的 Object 方法在面試中是一個(gè)非常高頻的點(diǎn),本文主要介紹了Java中Object類常用的12個(gè)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • VS?Code插件Language?Support?for?Java(TM)?by?Red?Hat報(bào)錯(cuò)兩種解決辦法

    VS?Code插件Language?Support?for?Java(TM)?by?Red?Hat報(bào)錯(cuò)兩種

    這篇文章主要介紹了VS?Code插件Language?Support?for?Java(TM)?by?Red?Hat報(bào)錯(cuò)兩種解決辦法的相關(guān)資料,第一種在setting.json中配置使用新版本JDK運(yùn)行,第二種方法是切換至支持舊版本Jdk的插件版本,但不推薦,建議要確保使用最新JDK以避免兼容性問題,需要的朋友可以參考下
    2026-04-04
  • SpringBoot中攔截器和動態(tài)代理的區(qū)別詳解

    SpringBoot中攔截器和動態(tài)代理的區(qū)別詳解

    在?Spring?Boot?中,攔截器和動態(tài)代理都是用來實(shí)現(xiàn)功能增強(qiáng)的,所以在很多時(shí)候,有人會認(rèn)為攔截器的底層是通過動態(tài)代理實(shí)現(xiàn)的,所以本文就來盤點(diǎn)一下他們兩的區(qū)別,以及攔截器的底層實(shí)現(xiàn)吧
    2023-09-09
  • idea如何開啟菜單欄

    idea如何開啟菜單欄

    文章介紹了如何通過修改IntelliJ IDEA的樣式文件`ui.lnf.xml`來重新顯示被關(guān)閉的菜單欄,并分享了解決問題的步驟
    2025-01-01
  • Java面向?qū)ο笾畠?nèi)部類詳解

    Java面向?qū)ο笾畠?nèi)部類詳解

    在 Java 中,允許一個(gè)類的定義位于另一個(gè)類的內(nèi)部,前者稱為內(nèi)部類,后者稱為外部類。這篇文章將總結(jié)一下內(nèi)部類的使用,感興趣的可以了解一下
    2022-10-10
  • Java類初始化執(zhí)行流程解析

    Java類初始化執(zhí)行流程解析

    這篇文章主要介紹了Java類初始化執(zhí)行流程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • 解決jar包rar壓縮后無法運(yùn)行問題

    解決jar包rar壓縮后無法運(yùn)行問題

    這篇文章主要介紹了解決jar包rar壓縮后無法運(yùn)行問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java數(shù)據(jù)結(jié)構(gòu)中圖的進(jìn)階詳解

    Java數(shù)據(jù)結(jié)構(gòu)中圖的進(jìn)階詳解

    在Java學(xué)習(xí)與應(yīng)用中,數(shù)據(jù)結(jié)構(gòu)無疑是每個(gè)人都要接觸的難點(diǎn),為了更好的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這一塊內(nèi)容,用圖來理解便是最好的方式,讓我們一起來了解本篇內(nèi)容圖的進(jìn)階
    2022-01-01
  • 30w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析

    30w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析

    這篇文章主要為大家介紹了30w+數(shù)據(jù)使用RedisTemplate?pipeline空指針NullPointerException異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評論

科技| 西城区| 三门县| 上高县| 柏乡县| 秦皇岛市| 囊谦县| 介休市| 工布江达县| 都江堰市| 三原县| 荥阳市| 淮北市| 阿巴嘎旗| 通渭县| 弋阳县| 岱山县| 施甸县| 星子县| 汉源县| 曲周县| 滁州市| 隆子县| 南雄市| 绿春县| 甘孜| 周宁县| 恩施市| 和龙市| 新民市| 天气| 苍南县| 博兴县| 宁德市| 赣榆县| 玛纳斯县| 河西区| 康乐县| 阳信县| 图片| 井冈山市|