求用java读写properties文件的代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求用java读写properties文件的代码相关的知识,希望对你有一定的参考价值。

Java代码
package com.LY;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;
public class TestMain
// 根据key读取value
public static String readValue(String filePath, String key)
Properties props = new Properties();
try
InputStream in = new BufferedInputStream(new FileInputStream(
filePath));
props.load(in);
String value = props.getProperty(key);
System.out.println(key + value);
return value;
catch (Exception e)
e.printStackTrace();
return null;


// 读取properties的全部信息
public static void readProperties(String filePath)
Properties props = new Properties();
try
InputStream in = new BufferedInputStream(new FileInputStream(
filePath));
props.load(in);
Enumeration en = props.propertyNames();
while (en.hasMoreElements())
String key = (String) en.nextElement();
String Property = props.getProperty(key);
System.out.println(key + Property);

catch (Exception e)
e.printStackTrace();


// 写入properties信息
public static void writeProperties(String filePath, String parameterName,
String parameterValue)
Properties prop = new Properties();
try
InputStream fis = new FileInputStream(filePath);
// 从输入流中读取属性列表(键和元素对)
prop.load(fis);
// 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
// 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(filePath);
prop.setProperty(parameterName, parameterValue);
// 以适合使用 load 方法加载到 Properties表中的格式,
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
prop.store(fos, "Update '" + parameterName+ "' value");
catch (IOException e)
System.err.println("Visit " + filePath + " for updating "
+ parameterName + " value error");


public static void main(String[] args)
readValue("info.properties", "url");
writeProperties("info.properties", "age","22");
readProperties("info.properties");
System.out.println("OK");

参考技术A Java可使用Properties类读写properties,具体说明如下:

1.Properties类与Properties配置文件
  Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方,就是它的键和值都是字符串类型。

2.Properties中的主要方法
(1)load(InputStream inStream)
  这个方法可以从.properties属性文件对应的文件输入流中,加载属性列表到Properties类对象。如下面的代码:
Properties pro = new Properties();
FileInputStream in = new FileInputStream("a.properties");
pro.load(in);
in.close();
(2)store(OutputStream out, String comments)
  这个方法将Properties类对象的属性列表保存到输出流中。如下面的代码:
FileOutputStream oFile = new FileOutputStream(file, "a.properties");
pro.store(oFile, "Comment");
oFile.close();
  如果comments不为空,保存后的属性文件第一行会是#comments,表示注释信息;如果为空则没有注释信息。
  注释信息后面是属性文件的当前保存时间信息。
(3)getProperty/setProperty
  这两个方法是分别是获取和设置属性信息。

3.代码实例
属性文件a.properties如下:
name=root
pass=liu
key=value
读取a.properties属性列表,与生成属性文件b.properties。代码如下:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Properties;
public class PropertyTest
public static void main(String[] args)
try
// 读取属性文件a.properties
InputStream in = new BufferedInputStream(new FileInputStream("a.properties"));
// /加载属性列表
Properties prop = new Properties();
prop.load(in);
Iterator<String> it = prop.stringPropertyNames().iterator();
while (it.hasNext())
String key = it.next();
System.out.println(key + ":" + prop.getProperty(key));

in.close();
// /保存属性到b.properties文件
FileOutputStream oFile = new FileOutputStream("b.properties", true);// true表示追加打开
prop.setProperty("phone", "10086");
prop.store(oFile, "The New properties file");
oFile.close();
catch (Exception e)
System.out.println(e);


java 顺序 读写 Properties 配置文件

java 顺序 读写 Properties 配置文件 支持中文 不乱码

java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不是顺序读写的。

特从网上查资料,顺序读写的代码,如下,

复制代码
import java.util.Collections;
import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;

public class OrderedProperties extends Properties {
    private static final long serialVersionUID = -4627607243846121965L;
    private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();

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

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

    public Set<Object> keySet() {
        return keys;
    }

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

    }
}
复制代码
复制代码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Properties;

public class PropertiesTest {

    public static void main(String[] args) {
        String readfile = "D:/eclipseworkspace/test/src/test.txt";
        Properties pro = readPropertiesFileObj(readfile); // 读取properties文件
        System.out.println(pro.getProperty("password0.9271224287974811"));
        pro.remove("password0.008229652622303574");
        writePropertiesFileObj(readfile, pro); // 写properties文件
    }

    // 读取资源文件,并处理中文乱码
    public static Properties readPropertiesFileObj(String filename) {
        Properties properties = new OrderedProperties();
        try {
            InputStream inputStream = new FileInputStream(filename);
            BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
            properties.load(bf);
            inputStream.close(); // 关闭流
        } catch (IOException e) {
            e.printStackTrace();
        }
        return properties;
    }

    // 写资源文件,含中文
    public static void writePropertiesFileObj(String filename, Properties properties) {
        if (properties == null) {
            properties = new OrderedProperties();
        }
        try {
            OutputStream outputStream = new FileOutputStream(filename);
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8"));
            properties.setProperty("username" + Math.random(), "myname");
            properties.setProperty("password" + Math.random(), "mypassword");
            properties.setProperty("chinese" + Math.random(), "中文");
            properties.store(bw, null);
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上是关于求用java读写properties文件的代码的主要内容,如果未能解决你的问题,请参考以下文章

java代码怎么获取properties文件的内容

Java 读写Properties配置文件

Java 读写Properties配置文件

Java 读写properties配置文件

Java 读写Properties配置文件

Java 读写Properties配置文件