网上讲的获取属性值大概有以下方法,以下三种方法逐渐优化,以达到最好的效果
以下都以date.properties文件为例,该文件放在src目录下,文件内容为
startdate=2011-02-07
totalweek=25
方法一:
public class Stweek {
static private String startdate = null;
static private String totalweek = null;
synchronized static public void loads(){
if(startdate == null || totalweek == null)
{
FileInputStream is = null;
Properties dbProps = new Properties();
try {
is = new FileInputStream(filepath);
dbProps.load(is);
startdate = dbProps.getProperty("startdate");
totalweek = dbProps.getProperty("totalweek");
}
catch (Exception e) {
System.err.println("不能读取属性文件. " +
"请确保db.properties在CLASSPATH指定的路径中");
}
}
}
public static String getStartdate() {
if(tartdate==null)
loads();
return startdate;
}
public static String getTotalweek() {
if(startdate==null)
loads();
return totalweek;
}
}
以上方法虽然也能获得配置文件内容,可是其最大的问题就是文件路径的定位(就是代码中的filepath取值问题),当采用绝对定位的时候,如果将工程移到另外一个盘符下运行,就需要修改源代码,否则就会报错,可是如果使用相对路径,当Stweek 类移到另外一个包中时,还是要修改源代码,否则会报错,所以说这个方法局限太大,不好 ,以下方法二能解决这个问题,可是其还是有些问题
方法二:
public class Stweek {
InputStream is = null;
Properties dbProps = null;
public Stweek() {
// TODO Auto-generated constructor stub
is = getClass().getResourceAsStream("/date.properties");
dbProps = new Properties();
try {
dbProps.load(is);
}
catch (Exception e) {
System.err.println("不能读取属性文件. " +
"请确保db.properties在CLASSPATH指定的路径中");
}
}
public String getStartdate()
{
String sd = null;
sd = dbProps.getProperty("startdate");
return sd;
}
public String getTotalweek()
{
String totalweek=null;
totalweek = dbProps.getProperty("totalweek");
return totalweek;
}
}
这个方法的好处就是不用指出配置文件的绝对路径,而且不管是将Stweek 类放到另外的包中,还是将整个工程移到到另外的盘符下,代码依然可以正常运行,不会有找不到文件的问题,可是这个方法仍然有一个重大的缺陷,因为我们往往希望配置文件能够缓存在内存中,这样不用每次读取时都要访问硬盘(访问外存太浪费时间),为此我们希望使用静态变量、静态方法来缓存和获得变量,同时能够实现这些值的动态加载(load),那么问题来了,因为getClass().getResourceAsStream("/date.properties"); 这一句只能出现在构造函数中(同鞋可以自己测试一下),动态load中并不能使用这个方法,怎么办呢,且看第三个方法
方法三:
import java.io.InputStream;
import java.util.Properties;
public class Stweek {
static private String startdate = null;
static private String totalweek = null;
static{
loads();
}
synchronized static public void loads(){
if(startdate == null || totalweek == null)
{
InputStream is = Stweek.class.getResourceAsStream("/date.properties");
Properties dbProps = new Properties();
try {
dbProps.load(is);
startdate = dbProps.getProperty("startdate");
totalweek = dbProps.getProperty("totalweek");
}
catch (Exception e) {
System.err.println("不能读取属性文件. " +
"请确保db.properties在CLASSPATH指定的路径中");
}
}
}
public static String getStartdate() {
if(startdate==null)
loads();
return startdate;
}
public static String getTotalweek() {
if(startdate==null)
loads();
return totalweek;
}
}
这个方法不仅能够缓存配置文件内容,还能够做到自动加载配置文件的内容到内存,使用者完全不用考虑手动加载的过程,只需要在需要用到的地方直接调用Stweek.getStartdate()即可(因为是静态方法,事先连对像也不用创建的),这样如果内存中有缓存,函数就会直接读取内存中的数据,节省时间,如果没有缓存也不用担心,系统会自动为你加载,使用者完全不用知道其是如何实现的,只需要知道我能直接调用函数获得想要的值就行了
分享到:
相关推荐
// 指定.properties文件的路径 String filePath = "config.properties"; Properties prop = new Properties(); try { // 使用FileInputStream打开文件 FileInputStream fis = new FileInputStream(filePath);...
// 加载.properties文件 props.load(in); // 获取属性值 String dbUrl = props.getProperty("db.url"); System.out.println("Database URL: " + dbUrl); } catch (IOException e) { e.printStackTrace(); } ...
在Java编程中,读取`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息,如数据库连接字符串、系统参数等。`.properties`文件是一种基于键值对的文本格式,易于理解和编辑。在这个场景中,我们将探讨...
在Java编程中,读写`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息、设置或环境变量。本文将深入探讨如何在Java中高效地处理`.properties`文件,包括读取、写入以及更新其内容。我们将参考提供的...
在Java编程中,读取`.properties`配置文件是常见的任务,这些文件通常用于存储应用程序的配置参数、系统设置等信息。下面将详细介绍几种在Java中读取`.properties`配置文件的方法。 1. 使用`java.util.Properties`...
Java提供了内置的`Properties`类来方便地读取和写入这些配置文件,使得在程序中动态访问这些设置变得简单。 首先,我们需要创建`.properties`文件。例如,我们可以创建一个名为`config.properties`的文件,内容如下...
读取Properties文件是Java开发中的常见操作,特别是在需要根据配置文件动态改变程序行为的时候。下面我们将详细探讨如何在Java中读取Properties文件。 首先,你需要确保你的项目中包含了一个Properties文件,比如`...
本篇文章将深入探讨如何解决Java读写.properties文件时的中文乱码问题。 首先,了解.properties文件的特性。这种文件的默认编码通常是ISO-8859-1,它不支持中文字符。因此,当文件中含有中文时,必须明确指定读写时...
在JavaScript环境中,与Java或服务器端语言不同,我们通常无法直接读取.properties文件,因为浏览器安全限制禁止了这种跨域请求。然而,为了在前端实现国际化(i18n)功能,有时候我们需要在JavaScript文件中读取...
在JavaScript(JS)环境中,读取.properties文件通常用于处理配置数据或者本地化文本。这些文件在Java开发中广泛使用,但JavaScript同样可以借助一些库或技术来读取它们。下面我们将详细探讨如何在JavaScript中实现...
首先,.properties文件是Java平台用于存储配置信息或文本资源的标准格式,特别适用于存储国际化字符串。这些文件通常包含键值对,其中键是标识符,值是对应的字符串。例如,键`greeting`可能对应值`你好,世界!`。...
总结一下,处理Java中的Properties文件时,关键是正确指定文件路径,以及在写入和读取时妥善管理文件流。确保关闭流并根据需要刷新,以避免数据丢失或未更新的问题。通过学习和实践这些解决方案,你将在Java应用开发...
在Python编程中,有时我们需要处理Java开发中常用的`.properties`配置文件。虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并...
为了确保Java读取`.properties`文件时正确解析UTF-8编码,你可以在文件开头添加以下注释: ``` # -*- coding: utf-8 -*- ``` 这行注释告诉Java解释器文件使用的是UTF-8编码,但这只对使用某些编辑器(如Eclipse)...
在Java中,我们可以使用`java.util.Properties`类来读取、写入和修改`.properties`文件。 #### 使用`Properties`类读取 以下代码展示了如何加载和读取`.properties`文件: ```java import java.io.FileInputStream...
在Java代码中,首先需要导入`java.util.Properties`和`java.io.*`等相关的类库,以便进行读写Properties文件的操作。 2. **加载Properties文件** 使用`Properties`类的`load()`方法加载Properties文件。这个方法...
在Java编程中,读取工程下特定类型的文件,如`.properties`文件,是常见的任务,这类文件常用于存储配置信息。本文将详细讲解如何在Java中读取`.properties`文件,以及相关的源码分析和工具使用。 首先,`....
本篇文章将深入探讨如何在Java中读取`properties`文件,无需依赖任何第三方库。 首先,我们需要了解Java的标准库中提供的`java.util.Properties`类。这个类提供了一种存储和加载属性列表的方法,它能够处理`....
1. **properties文件结构** `properties`文件的结构非常简单,每行代表一个键值对,键和值之间用等号`=`或冒号`:`分隔。例如: ``` username=admin password=123456 database.url=jdbc:mysql://localhost:3306/...