我正在使用servlet,其中我硬编码了数据库连接详细信息,因此如果进行任何更改,我必须重新编译代码。因此,我想使用一个.properties文件(稍后可以修改),并将其用作我的数据库连接源。
问题是我不知道如何读取属性文件。请问有人能帮我读取该文件吗?
我正在使用servlet,其中我硬编码了数据库连接详细信息,因此如果进行任何更改,我必须重新编译代码。因此,我想使用一个.properties文件(稍后可以修改),并将其用作我的数据库连接源。
问题是我不知道如何读取属性文件。请问有人能帮我读取该文件吗?
. . .
// create and load default properties
Properties defaultProps = new Properties();
FileInputStream in = new FileInputStream("defaultProperties");
defaultProps.load(in);
in.close();
// create application properties with default
Properties applicationProps = new Properties(defaultProps);
// now load properties from last invocation
in = new FileInputStream("appProperties");
applicationProps.load(in);
in.close();
. . .
这里的示例来自于Properties
(Java)
Properties
类的方法可能会抛出异常:
- 当文件路径无效时(FileNotFoundException
)。请尝试创建一个File
对象并检查该File
是否存在。
- ...
Configuration config = new PropertiesConfiguration("user.properties");
String connectionUrl = config.getString("connection.url");
以下是有关文件位置的信息,这可能也很重要:
如果您没有指定绝对路径,则文件将自动在以下位置中搜索:
- 当前目录
- 用户主目录
- 类路径
因此,在servlet中读取属性文件时,您应该将属性文件放在类路径中(例如,在WEB-INF/classes
中)。
您可以在他们的网站上找到更多示例。
您可以使用 java.util.Properties
。
http://www.codingeek.com/java/using-getresourceasstream-in-static-method-reading-property-files
http://www.codingeek.com/java/read-and-write-properties-file-in-java-examples/
Properties prop = new Properties();
FileReader fr = new FileReader(filename);
prop.load(fr);
Set<String> keys = pr.stringPropertyNames();
//now u can get the values from keys.
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("my.properties");
Properties p = new Properties();
p.load(in);
in.close();
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class DBPropsWatcherListener
implements ServletContextListener
{
public void contextInitialized(ServletContextEvent event)
{
ServletContext servletContext = event.getServletContext();
Timer timer = new Timer("ResourceListener");
timer.schedule(new MyWatcherTask(servletContext), 15);
}
public void contextDestroyed(ServletContextEvent event)
{
}
private class MyWatcherTask extends TimerTask
{
private final ServletContext servletContext;
private long lastModifiedTime = -1;
public MyWatcherTask(ServletContext servletContext)
{
this.servletContext = servletContext;
}
public void run()
{
try {
File resourceFile = new File(System.getProperty("dbProps"));
long current = resourceFile.lastModified();
if (current > lastModifiedTime) {
java.io.InputStream dbPropsStream = new FileInputStream(resourceFile );
java.util.Properties dbProps = new java.util.Properites();
dbProps.load(dbPropsStream);
realoadDBProps();
}
lastModifiedTime = current;
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
}
File f1 = new File("abcd.properties");
FileReader fin = new FileReader(f1);
Properties pr = new Properties();
pr.load(fin);
Set<String> keys = pr.stringPropertyNames();
Iterator<String> it = keys.iterator();
String key, value;
while (it.hasNext())
{
key = it.next();
value = pr.getProperty(key);
System.out.println(key+":"+value);
}
}
Properties
类有一个方便的load
方法,这是读取Java属性文件最简单的方法。