Java lit et écrit des fichiers de propriétés et des fichiers xml pour résoudre le problème des caractères chinois tronqués


avant-propos

Nous avons souvent besoin d'utiliser des fichiers de configuration pendant le développement. Nous pouvons facilement définir les valeurs des paramètres qui doivent être modifiés et configurés dans le fichier de configuration. Parfois, certains paramètres de nos environnements de développement et de production locaux sont différents, tels que l'adresse IP de la base de données et le compte. mot de passe, etc., le chemin du dossier à lire, l'heure et le cycle de sauvegarde des logs, etc., certains diront qu'il sera possible de définir directement ces valeurs comme variables finales bientôt ? L'inconvénient est que lorsque nous déployons le projet dans l'environnement de production, nous devons réajuster le code Java, puis régénérer le package jar ou le package war, et la définition peut être ouverte directement dans le fichier de configuration pour modification. ces paramètres dans le fichier de configuration C'est très pratique pour une modification ultérieure.
Les fichiers de configuration couramment utilisés en java sont properties, xml et txt. Cet article présentera les méthodes de lecture et d'écriture de ces trois fichiers de configuration.


1. Fichier de propriétés

1.1 introduction au format des propriétés

Le fichier de propriétés est un fichier texte et les informations de configuration d'une propriété sont écrites sous la forme "clé=valeur".
insérez la description de l'image ici
Comme le montre le diagramme de structure de classe ci-dessus, il hérite de Hashtable et implémente
les propriétés des propriétés de l'interface Map. Les espaces avant et après la valeur de la clé sont ignorés lors de l'analyse.
Remarque : ajouter # devant
insérez la description de l'image ici

1.2 Lisez les propriétés sous les ressources/modèles du projet et traitez les caractères chinois tronqués

Lors de la lecture du fichier de propriétés, il convient de noter que si la valeur lue contient du chinois, il y aura des caractères tronqués, qui doivent être traités à nouveau.
insérez la description de l'image ici
Le fichier de propriétés est placé sous la ressource/les modèles du projet et
le code est le suivant :

    //读取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 Lire les propriétés locales et traiter les caractères chinois brouillés

Si le fichier de propriétés est local, il peut être lu comme suit :
le code est le suivant :

    //读取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 Modifier le fichier de propriétés

    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();
        }
    }

2. Fichier XML

Format de fichier 2.1xml

ML signifie Extensible Markup Language (EXtensible Markup Language), qui est un langage de balisage très similaire à HTML.
En XML, vous pouvez développer et inventer vos propres balises. XML n'a pas de balises prédéfinies, et XML permet aux créateurs de définir ou de concevoir leurs propres balises et structure de document. Structure de base : le nom du suffixe du document XML.xml La première ligne de XML doit
définir
le
document Declaration
Le fichier xml que l'on voit souvent dans le projet est pom.xml, je pense que tout le monde doit le connaître !
Il y a aussi mybatis.xml utilisé par mybatis

<?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 lire le fichier xml

Le code est le suivant (exemple) :

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 Écrire un fichier xml

Le code est le suivant (exemple) :

//写资源文件到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();
        }
    }

Je suppose que tu aimes

Origine blog.csdn.net/sunzixiao/article/details/132076095
conseillé
Classement