Cli*_*ote 218 java properties
我有一个配置值的键/值对列表,我想存储为Java属性文件,然后加载和迭代.
问题:
.txt正常?Zed*_*Zed 242
您可以将InputStream传递给Property,因此您的文件几乎可以在任何地方,并且可以调用任何内容.
Properties properties = new Properties();
try {
properties.load(new FileInputStream("path/filename"));
} catch (IOException e) {
...
}
Run Code Online (Sandbox Code Playgroud)
迭代为:
for(String key : properties.stringPropertyNames()) {
String value = properties.getProperty(key);
System.out.println(key + " => " + value);
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 79
您可以将文件存储在任何您喜欢的位置.如果要将其保存在jar文件中,则需要使用Class.getResourceAsStream()或ClassLoader.getResourceAsStream()访问它.如果它在文件系统上,则稍微容易一些.
任何扩展都没问题,尽管.properties在我的经验中更常见
如果您正在使用Java 6,则使用Properties.load传入InputStream或传入文件来加载文件StreamReader.(如果您使用的是Java 6,我可能会使用UTF-8而不是默认的ISO-8859-1编码用于流. )Reader
当你迭代正常Hashtable(Properties源自)时,迭代它,例如使用keySet().或者,您可以使用返回的枚举propertyNames().
Fab*_*eeg 26
如果将属性文件放在与Foo类相同的包中,则可以轻松加载它
new Properties().load(Foo.class.getResourceAsStream("file.properties"))
Run Code Online (Sandbox Code Playgroud)
鉴于Properties扩展了Hashtable,您可以以与Hashtable中相同的方式迭代值.
如果使用*.properties扩展,则可以获得编辑器支持,例如Eclipse具有属性文件编辑器.
ada*_*ost 11
有很多方法可以创建和读取properties文件:
.properties扩展,但您可以选择自己的扩展.java.util包=> ,,Properties 类.ListResourceBundleResourceBundleProperties或java.lang.System类.ResourceBundle 类:
ResourceBundle rb = ResourceBundle.getBundle("prop"); // prop.properties
System.out.println(rb.getString("key"));
Run Code Online (Sandbox Code Playgroud)
Properties 类:
Properties ps = new Properties();
ps.Load(new java.io.FileInputStream("my.properties"));
Run Code Online (Sandbox Code Playgroud)
这会加载属性文件:
Properties prop = new Properties();
InputStream stream = ...; //the stream to the file
try {
prop.load(stream);
} finally {
stream.close();
}
Run Code Online (Sandbox Code Playgroud)
我用.将.properties文件放在我拥有所有配置文件的目录中,我不会将它与访问它的类放在一起,但这里没有限制.
对于名称...我使用.properties来表示冗长,如果你不想要,我认为你不应该将它命名为.properties.
小智 5
例:
Properties pro = new Properties();
FileInputStream in = new FileInputStream("D:/prop/prop.properties");
pro.load(in);
String temp1[];
String temp2[];
// getting values from property file
String username = pro.getProperty("usernamev3");//key value in prop file
String password = pro.getProperty("passwordv3");//eg. username="zub"
String delimiter = ","; //password="abc"
temp1=username.split(delimiter);
temp2=password.split(delimiter);
Run Code Online (Sandbox Code Playgroud)
财产已成为遗产。首选项类优先于属性。
偏好数据分层集合中的一个节点。此类允许应用程序存储和检索用户和系统首选项和配置数据。此数据永久存储在依赖于实现的后备存储中。典型的实现包括平面文件、特定于操作系统的注册表、目录服务器和 SQL 数据库。这个类的用户不需要关心后备存储的细节。
与基于字符串的键值对的属性不同,Preferences该类有多种方法用于获取原始数据并将其放入首选项数据存储中。我们只能使用以下类型的数据:
要加载属性文件,您可以提供绝对路径,或者getResourceAsStream()在类路径中存在属性文件时使用。
package com.mypack.test;
import java.io.*;
import java.util.*;
import java.util.prefs.Preferences;
public class PreferencesExample {
public static void main(String args[]) throws FileNotFoundException {
Preferences ps = Preferences.userNodeForPackage(PreferencesExample.class);
// Load file object
File fileObj = new File("d:\\data.xml");
try {
FileInputStream fis = new FileInputStream(fileObj);
ps.importPreferences(fis);
System.out.println("Prefereces:"+ps);
System.out.println("Get property1:"+ps.getInt("property1",10));
} catch (Exception err) {
err.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preferences SYSTEM 'http://java.sun.com/dtd/preferences.dtd'>
<preferences EXTERNAL_XML_VERSION="1.0">
<root type="user">
<map />
<node name="com">
<map />
<node name="mypack">
<map />
<node name="test">
<map>
<entry key="property1" value="80" />
<entry key="property2" value="Red" />
</map>
</node>
</node>
</node>
</root>
</preferences>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
296368 次 |
| 最近记录: |