java讀取配置文件的幾種方法以及路徑問題

.類載入器讀取:
只能讀取classes或者類路徑中的任意資源,但是不適合讀取特別大的資源。
①獲取類載入器 ClassLoader cl = 類名.class.getClassLoader();
②調用類載入器對象的方法:public URL getResource(String name);
此方法查找具有給定名稱的資源,資源的搜索路徑是虛擬機的內置類載入器的路徑。
類 URL 代表一個統一資源定位符,它是指向互聯網」資源」的指針。
資源可以是簡單的文件或目錄,也可以是對更為復雜的對象的引用.
URL對象方法:public String getPath(),獲取此 URL 的路徑部分。
示例代碼
2.類載入器讀取:
只能讀取classes或者類路徑中的任意資源,但是不適合讀取特別大的資源。
①獲取類載入器 ClassLoader cl = 類名.class.getClassLoader();
②調用類載入器對象的方法:public InputStream getResourceAsStream(String name);
返回讀取指定資源的輸入流。資源的搜索路徑是虛擬機的內置類載入器的路徑。

❷ Java中如何設置讀取ini配置文件

/*
* IniReader.java
* 用Java讀取INI文件(帶section的)
* 示例:
* IniReader reader = new IniReader("E:\\james\\win.ini");
* out.println(reader.getValue("TestSect3", "kkk 6"));
*/

package tmp;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Properties;

public class IniReader {

protected HashMap sections = new HashMap();
private transient String currentSecion;
private transient Properties current;

public IniReader(String filename) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(filename));
read(reader);
reader.close();
}

protected void read(BufferedReader reader) throws IOException {
String line;
while ((line = reader.readLine()) != null) {
parseLine(line);
}
}

protected void parseLine(String line) {
line = line.trim();
if (line.matches("\\[.*\\]")) {
currentSecion = line.replaceFirst("\\[(.*)\\]", "$1");
current = new Properties();
sections.put(currentSecion, current);
} else if (line.matches(".*=.*")) {
if (current != null) {
int i = line.indexOf('=');
String name = line.substring(0, i);
String value = line.substring(i + 1);
current.setProperty(name, value);
}
}
}

public String getValue(String section, String name) {
Properties p = (Properties) sections.get(section);

if (p == null) {
return null;
}

String value = p.getProperty(name);
return value;
}

}

ini文件如下:

[TestSect1]
kkk 1=VVVVVVVVVVV1
kkk 2=VVVVVVVVVVV2

[TestSect2]
kkk 3=VVVVVVVVVVV3
kkk 4=VVVVVVVVVVV4

[TestSect3]
kkk 5=VVVVVVVVVVV5
kkk 6=VVVVVVVVVVV6

❸ java 怎麼讀取配置文件

一.讀取xml配置文件
(一)新建一個java bean(HelloBean. java)

java代碼
(二)構造一個配置文件(beanConfig.xml)
xml 代碼
(三)讀取xml文件
1.利用

java代碼
2.利用FileSystemResource讀取
java代碼
二.讀取properties配置文件
這里介紹兩種技術:利用spring讀取properties 文件和利用java.util.Properties讀取
(一)利用spring讀取properties 文件
我們還利用上面的HelloBean. java文件,構造如下beanConfig.properties文件:
properties 代碼
helloBean.class=chb.demo.vo.HelloBean
helloBean.helloWorld=Hello!chb!
屬性文件中的"helloBean"名稱即是Bean的別名設定,.class用於指定類來源。
然後利用org.springframework.beans.factory.support.來讀取屬性文件

java代碼

(二)利用java.util.Properties讀取屬性文件
比如,我們構造一個ipConfig.properties來保存伺服器ip地址和埠,如:
properties 代碼
ip=192.168.0.1
port=8080
三.讀取位於Jar包之外的properties配置文件

下面僅僅是列出讀取文件的過程,剩下的解析成為properties的方法同上
1 FileInputStream reader = new FileInputStream("config.properties");

2 num = reader.read(byteStream);

3 ByteArrayInputStream inStream = new ByteArrayInputStream(byteStream, 0, num);

四.要讀取的配置文件和類文件一起打包到一個Jar中
String currentJarPath = URLDecoder.decode(YourClassName.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); //獲取當前Jar文件名,並對其解碼,防止出現中文亂碼
JarFile currentJar = new JarFile(currentJarPath);
JarEntry dbEntry = currentJar.getJarEntry("包名/配置文件");
InputStream in = currentJar.getInputStream(dbEntry);
//以上YourClassName是class全名,也就是包括包名

修改:
JarOutputStream out = new FileOutputStream(currentJarPath);
out.putNextEntry(dbEntry);
out.write(byte[] b, int off, int len); //寫配置文件
。。。

out.close();

❹ 如何在java類中讀取Properties配置文件

最常用讀取properties文件的方法 InputStream in = getClass().getResourceAsStream("資源Name");這種方式要求properties文件和當前類在同一文件夾下面。如果在不同的包中,必須使用: InputStream ins = this.getClass().getResourceAsStream(

❺ JAVA中如何重新載入.properties文件,使其他引用實時改變。

如果只是程序更改值的請使用,prop.setProperty("ss", "123"); 。如果是人為修改 .properties 文件的值 。關閉上次,讀取流 。

Properties prop = new Properties();

FileReader in = new FileReader("ss.properties");
prop.load(in);
in.close();

你的是javaEE 的項目,可以 監聽器試試吧 !

❻ 用java 如何讀取配置文件(如:資源文件)中配

java讀取配置文件的幾種方法如下:
方式一:採用ServletContext讀取,讀取配置文件的realpath,然後通過文件流讀取出來。因為是用ServletContext讀取文件路徑,所以配置文件可以放入在web-info的classes目錄中,也可以在應用層級及web-info的目錄中。文件存放位置具體在eclipse工程中的表現是:可以放在src下面,也可放在web-info及webroot下面等。因為是讀取出路徑後,用文件流進行讀取的,所以可以讀取任意的配置文件包括xml和properties。缺點:不能在servlet外面應用讀取配置信息。
方式二:採用ResourceBundle類讀取配置信息,
優點是:可以以完全限定類名的方式載入資源後,直接的讀取出來,且可以在非Web應用中讀取資源文件。缺點:只能載入類classes下面的資源文件且只能讀取.properties文件。
方式三:採用ClassLoader方式進行讀取配置信息
優點是:可以在非Web應用中讀取配置資源信息,可以讀取任意的資源文件信息
缺點:只能載入類classes下面的資源文件。
方法4 getResouceAsStream
XmlParserHandler.class.getResourceAsStream 與classloader不同

使用的是當前類的相對路徑

❼ Java,載入不到配置文件中的值

建議做下面兩個檢查,1.檢查,配置文件是否加到編譯的classpath下,2.檢查文件的載入路徑是否有問題,如果是包外配置,是否有盤符的問題

❽ java中用Properties類載入配置文件

一個Properties只能載入一個問題,如果你需要載入多個的話只能多回寫幾個了。
例如答:
Properties prop = new Properties();
prop.load(ConfigUtil.class.getClassLoader().getResourceAsStream("config.properties"));

Properties prop1 = new Properties();
prop1.load(ConfigUtil.class.getClassLoader().getResourceAsStream("config.properties1"));

❾ 配置文件在java 中怎麼創建

1.一般在scr下面新建一個屬性文件*.properties,如a.properties

然後在Java程序中讀取或操作這個屬性文件。
代碼實例
屬性文件a.properties如下:
name=root
pass=liu
key=value

讀取a.properties屬性列表,與生成屬性文件b.properties。代碼如下:

1 import java.io.BufferedInputStream;
2 import java.io.FileInputStream;
3 import java.io.FileOutputStream;
4 import java.io.InputStream;
5 import java.util.Iterator;
6 import java.util.Properties;
7
8 public class PropertyTest {
9 public static void main(String[] args) {
10 Properties prop = new Properties();
11 try{
12 //讀取屬性文件a.properties
13 InputStream in = new BufferedInputStream (new FileInputStream("a.properties"));
14 prop.load(in); ///載入屬性列表
15 Iterator<String> it=prop.stringPropertyNames().iterator();
16 while(it.hasNext()){
17 String key=it.next();
18 System.out.println(key+":"+prop.getProperty(key));
19 }
20 in.close();
21
22 ///保存屬性到b.properties文件
23 FileOutputStream oFile = new FileOutputStream("b.properties", true);//true表示追加打開
24 prop.setProperty("phone", "10086");
25 prop.store(oFile, "The New properties file");
26 oFile.close();
27 }
28 catch(Exception e){
29 System.out.println(e);
30 }
31 }
32 }
getProperty/setProperty這兩個方法是分別是獲取和設置屬性信息。
Properties類繼承自Hashtable類並且實現了Map介面,也是使用一種鍵值對的形式來保存屬性集。不過Properties有特殊的地方,就是它的鍵和值都是字元串類型。

*.properties文件的注釋用#。
配置數據的時候是以鍵值對的形式,調用的時候和修改的時候也是操作鍵值對。

2.當然還可以用*.xml來配置,位置一般在一個包下面。
例如com.styspace包下面的config.properties文件。
xml version="1.0" encoding="gbk"?>
<Accounts>
<Account type="by0003">
<code>100001</code>
<pass>123</pass>
<name>李四</name>
<money>1000000.00</money>
</Account>
</Accounts>

現在操作config.properties文件。
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

public class peropertiesLoaderTest {

public static void main(String[] args) throws ConfigurationException{
Configuration config = new PropertiesConfiguration("com/styspace/config.properties");
String name = config.getString("name");
System.out.println("name:" + name);
}
}

❿ 如何使用java類來載入properties配置文件的屬性信息

一個Properties只能載入一個問題,如果你需要載入多個的話只能多寫幾個了。例如:Propertiesprop=newProperties();prop.load(ConfigUtil.class.getClassLoader().getResourceAsStream("config.properties"));Propertiesprop1=newPro