java 的properties读取

本文介绍了一种使用Java从工程根目录或src目录加载属性文件(test.properties)的方法,并演示了如何通过键获取属性值。此外,还提供了一个使用Spring框架加载webservice.properties文件的例子。
package com.servlet;

import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Properties;

public class TestPro {

/**
* @param args
* @throws FileNotFoundException
*/
public String getValue(String key)
{
String value = "" ;
// TestPro tt= new TestPro();
// String path = this.getClass().getResource("").getPath().toString();
// path = path.substring(0, path.indexOf("classes")-1) + "/src/test.properties";
// System.out.println(path);
Properties p = new Properties();
final InputStream in = this.getClass().getResourceAsStream("/test.properties");
// FileInputStream in = null;

try
{
p.load(in) ;
}catch(Exception e){
e.printStackTrace();
}

if(p.containsKey(key)){
value = p.getProperty(key);
}
return value;
}

public static void main(String[] args) {

TestPro tt =new TestPro();
System.out.println(tt.getValue("name"));
}

}
PS:final InputStream in = this.getClass().getResourceAsStream("/test.properties");
/代表工程目录。。、/是放在src下。。
不加。。是类的当前目录

第二种:
package com.doone.config;

import java.io.InputStream;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;

@Repository("getproperties")
public class GetWsProperties {

private static Logger logger = Logger.getLogger(GetWsProperties.class);

public Properties getWsValue()
{
final Properties properties = new Properties();
final InputStream in = this.getClass().getResourceAsStream("/webservice.properties");

try{
properties.load(in) ;
}catch(Exception e){
e.printStackTrace();
logger.info("读取webservice.properties文件失败...");
}
return properties ;
}

public static void main(String[] args)
{
GetWsProperties p = new GetWsProperties();
Properties pp = p.getWsValue();

System.out.println(pp.getProperty("SafeGuard_QS")+pp.size());
}
}
<think>嗯,用户问的是如何在Java读取和写入properties文件。首先,我需要回忆一下Java中处理properties文件的基本方法。记得Properties类是专门用来处理这类配置文件的,它继承自Hashtable,所以应该有load和store方法。 然后,用户需要具体的例子,所以我应该分别给出读取和写入的代码示例。读取的时候,通常用FileInputStream来加载文件,而写入则用FileOutputStream。要注意异常处理,比如IOException,可能需要捕获或者抛出。但例子中可能需要简化,使用try-with-resources来自动关闭流。 接下来,用户提供的引用里有提到一些细节,比如注释的写法,特殊字符的转义,比如使用反斜杠来处理空格、引号等。在示例中应该展示这些情况吗?或者可能用户更关注基本的读写操作。引用中的例子显示properties文件支持#和!作为注释,键值对的格式,以及多行值的写法。这些可能在解释代码时提到,但不必深入,除非用户特别问及。 另外,用户可能想知道如何获取和设置属性值。比如使用getProperty和setProperty方法。代码示例中应该包括这两个方法的使用。例如,读取后获取某个键的值,写入前设置新的值。 还要考虑路径的问题。用户提供的例子中使用的是"filename.properties",可能需要提醒用户根据实际路径调整,或者使用相对路径。比如如果文件在项目根目录下,直接写文件名即可,否则需要正确路径。 然后,关于中文的处理,Properties文件通常是ISO-8859-1编码,所以如果包含非ASCII字符,可能需要用到native2ascii工具或者使用ResourceBundle来处理,但用户的问题可能不需要涉及这些复杂情况,保持例子简单。 还有,用户提供的引用里有提到XML格式的properties文件,但问题中用户明确要求的是.properties文件,所以可能不需要涉及XML部分,除非用户后续提问。 最后,生成相关问题的时候,应该围绕properties文件的更多操作,比如特殊字符处理、编码问题、使用场景、与其他配置方式的对比等。确保问题有助于用户进一步学习。</think>### Java读取和写入Properties文件的方法 #### 1. 读取Properties文件 使用`java.util.Properties`类和输入流加载文件: ```java import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class ReadProperties { public static void main(String[] args) { Properties prop = new Properties(); try (FileInputStream input = new FileInputStream("config.properties")) { prop.load(input); // 加载文件内容 String value = prop.getProperty("key"); // 获取键对应的值 System.out.println("key=" + value); } catch (IOException e) { e.printStackTrace(); } } } ``` #### 2. 写入Properties文件 通过输出流保存修改后的配置: ```java import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class WriteProperties { public static void main(String[] args) { Properties prop = new Properties(); prop.setProperty("newKey", "newValue"); // 添加或修改键值对 try (FileOutputStream output = new FileOutputStream("config.properties")) { prop.store(output, "Updated configuration"); // 保存到文件 } catch (IOException e) { e.printStackTrace(); } } } ``` #### 关键点说明 - **文件路径**:默认从项目根目录查找文件,需确保路径正确[^3]。 - **特殊字符**:值中的空格、换行符等需用转义符号(如`\t`、`\n`)表示[^4]。 - **编码**:Properties文件默认使用ISO-8859-1编码,非ASCII字符需转义(如`\u4e2d`表示中文字符)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值