• Java读写Properties文件


     Java读写Properties文件
     
    Java中读写资源文件最重要的类是Properties,功能大致如下:
    1. 读写Properties文件
    2. 读写XML文件
    3. 不仅可以读写上述两类文件,还可以读写其它格式文件如txt等,只要符合key=value格式即可.
     
    注意:资源文件中含有中文时的处理方法
    1. 将中文字符通过工作转成utf8编码,可以通过Java自带的nativetoascii或Eclipse中的属性编辑器。
    2. 直接调用 new String(youChineseString.getBytes("ISO-8859-1"), "GBK");
     
    附:WEB程序中加载资源文件的方法
    Properties prop = null;
    1. prop = Thread.currentThread().getContextClassLoader().getResourceAsStream("filename");
    2. prop = this.getClass().getClassLoader().getResourceAsStream("filename");
     
    Properties能读取以key,value存储的任何格式文件,究竟有什么神奇,猫一眼类结构,
     
    原来它继承了Hashtable并实现了Map接口,这样大家放心了吧。
     
    [java] view plaincopyprint?
    package apistudy;
     
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.util.Properties;
     
    public class PropertiesTest
    {
     
        public static void main(String[] args)
        {
     
            String readfile = "d:" + File.separator + "readfile.properties";
            String writefile = "d:" + File.separator + "writefile.properties";
            String readxmlfile = "d:" + File.separator + "readxmlfile.xml";
            String writexmlfile = "d:" + File.separator + "writexmlfile.xml";
            String readtxtfile = "d:" + File.separator + "readtxtfile.txt";
            String writetxtfile = "d:" + File.separator + "writetxtfile.txt";
     
            readPropertiesFile(readfile); //读取properties文件
            writePropertiesFile(writefile); //写properties文件
            readPropertiesFileFromXML(readxmlfile); //读取XML文件
            writePropertiesFileToXML(writexmlfile); //写XML文件
            readPropertiesFile(readtxtfile); //读取txt文件
            writePropertiesFile(writetxtfile); //写txt文件
        }
     
        //读取资源文件,并处理中文乱码
        public static void readPropertiesFile(String filename)
        {
            Properties properties = new Properties();
            try
            {
                InputStream inputStream = new FileInputStream(filename);
                properties.load(inputStream);
                inputStream.close(); //关闭流
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            String username = properties.getProperty("username");
            String passsword = properties.getProperty("password");
            String chinese = properties.getProperty("chinese");
            try
            {
                chinese = new String(chinese.getBytes("ISO-8859-1"), "GBK"); // 处理中文乱码
            }
            catch (UnsupportedEncodingException e)
            {
                e.printStackTrace();
            }
            System.out.println(username);
            System.out.println(passsword);
            System.out.println(chinese);
        }
     
        //读取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 username = properties.getProperty("username");
            String passsword = properties.getProperty("password");
            String chinese = properties.getProperty("chinese"); //XML中的中文不用处理乱码,正常显示
            System.out.println(username);
            System.out.println(passsword);
            System.out.println(chinese);
        }
     
        //写资源文件,含中文
        public static void writePropertiesFile(String filename)
        {
            Properties properties = new Properties();
            try
            {
                OutputStream outputStream = new FileOutputStream(filename);
                properties.setProperty("username", "myname");
                properties.setProperty("password", "mypassword");
                properties.setProperty("chinese", "中文");
                properties.store(outputStream, "author: shixing_11@sina.com");
                outputStream.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
     
        //写资源文件到XML文件,含中文
        public static void writePropertiesFileToXML(String filename)
        {
            Properties properties = new Properties();
            try
            {
                OutputStream outputStream = new FileOutputStream(filename);
                properties.setProperty("username", "myname");
                properties.setProperty("password", "mypassword");
                properties.setProperty("chinese", "中文");
                properties.storeToXML(outputStream, "author: shixing_11@sina.com");
                outputStream.close();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
     
    }
     
     
    运行本程序所需的资源文件,我是放在D盘根目录,如D:/readfile.properties
    1. readfile.properties
    username=myname
    password=mypassword
    chinese=中文
    2. writefile.properties
    #author: shixing_11@sina.com
    #Fri May 28 22:19:44 CST 2010
    password=mypassword
    chinese=/u4E2D/u6587
    username=myname
        3. readxmlfile.xml
             <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <entry key="password">mypassword</entry>
    <entry key="chinese">中文</entry>
    <entry key="username">myname</entry>
    </properties>
        4. writexmlfile.xml
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <comment>author: shixing_11@sina.com</comment>
    <entry key="password">mypassword</entry>
    <entry key="chinese">中文</entry>
    <entry key="username">myname</entry>
    </properties>
        5. readtxtfile.txt
               username=myname
               password=mypassword
               chinese=中文
        6. writetxtfile.txt
    #author: shixing_11@sina.com
    #Fri May 28 22:25:16 CST 2010
    password=mypassword
    chinese=/u4E2D/u6587
    username=myname
  • 相关阅读:
    类别category 总结
    autorelease理解
    NSAutoreleasePool drain release的区别
    ios 文件管理 目录
    关于autorelease pool一个较好的理解
    iOS中四种实例变量的范围类型@private@protected@public@package
    批量删除
    会话用法 和留言板例题
    运用php做投票题,例题
    php 封装
  • 原文地址:https://www.cnblogs.com/lhfyy/p/4076804.html
Copyright © 2020-2023  润新知