读取Properties文件的几种方法
2007-10-30 23:25
302 查看
1。使用java.util.Properties类的load()方法
示例:
InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
2。使用java.util.ResourceBundle类的getBundle()方法
示例:
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());
3。使用java.util.PropertyResourceBundle类的构造函数
示例:
InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);
4。使用class变量的getResourceAsStream()方法
示例:
InputStream in = JProperties.class.getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
示例:
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
示例:
InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);
补充
Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:
InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);
以上内容引用自:http://blog.csdn.net/explorering/archive/2006/10/11/1330709.aspx
我在实际的RCP的项目中是这样做的:设置首选项,在首选项中配置资源文件的路径,然后在需要读取资源文件的地方,使用如下方法得到资源文件的路径:
public static final String CS_CONFIG_PATH = Activator.getDefault()
.getPreferenceStore().getString(Cs_Config_Path_PreferencePage.CS_CONFIG_PATH);
其中Cs_Config_Path_PreferencePage即为在首选项中配置资源文件路径的类:
package com.winscad.preferred;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import winscad.Activator;
public class Cs_Config_Path_PreferencePage extends PreferencePage implements
IWorkbenchPreferencePage,ModifyListener ...{
//为文本框定义键值
public static final String CS_CONFIG_PATH = "$CS_CONFIG_PATH";
//为文本框定义默认值
private static final String CS_CONFIG_PATH_DEFAULT
= "D:/kevin/workspace/winscadcs/properties/";
//定义文本框
private Text configPathText;
//定义一个IPreferenceStore对象
private IPreferenceStore ps;
// //定义并创建一个验证监听器
// private VerifyListener verifyListener = new VerifyListener(){
//
// public void verifyText(VerifyEvent e) {
// boolean b = ("0123456789".indexOf(e.text)>=0);
// }
// };
/** *//**
* 接口IWorkbenchPreferencePage的方法,负责初始化。在此方法中设置一个
* PreferenceStore对象,由此对象提供文本框值的读入和写出方法
*/
public void init(IWorkbench workbench) ...{
setPreferenceStore(Activator.getDefault().getPreferenceStore());
}
/** *//**
* 父类的界面创建方法
*/
protected Control createContents(Composite parent) ...{
ps = getPreferenceStore();//取得一个IPreferenceStore对象
Composite topComposite = new Composite(parent, SWT.NONE);
topComposite.setLayout(new GridLayout());
createDbConnectGroup(topComposite);
return topComposite;
}
/** *//**
* 创建资源文件连接组
*/
private void createDbConnectGroup(Composite topComp) ...{
Group group = new Group(topComp, SWT.NONE);
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
group.setLayout(new GridLayout(2, false));
group.setText("资源文件配置");
new Label(group, SWT.NONE).setText("CS_CONFIG_PATH:");
configPathText = new Text(group, SWT.BORDER);
configPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
/**//*
* 从取出以前保存的值,并将其设置到文本框中,如果取出值为空
* 或者是空字串,则填入缺省值。
*/
String path = ps.getString(CS_CONFIG_PATH);
if (path == null || path.trim().equals(""))
configPathText.setText(CS_CONFIG_PATH_DEFAULT);
else
configPathText.setText(path);
/**//*
* 添加事件监听,this代表本类,因本类也实现了ModifyListener接口,
* 所以本类可以做为监听器使用
*/
configPathText.addModifyListener(this);
}
/** *//**
* 本类实现ModifyListener接口的方法,当三个文本框中发生修改时将执行此方法。
* 方法中对输入值进行了验证并将“确定”、“应用”两按钮使能。
*/
public void modifyText(ModifyEvent e) ...{
String errorStr = null;//将原错误信息清空
if (configPathText.getText().trim().length() == 0) ...{
errorStr = "PATH不能为空!";
}
setErrorMessage(errorStr);//errorStr=null时复原为正常的提示文字
setValid(errorStr == null);//“确定”按钮
getApplyButton().setEnabled(errorStr == null);//“应用”按钮
}
/** *//**
* 父类方法,单击“复原缺省值”按钮时将执行此方法,取出缺省值设置到文本框中。
*/
protected void performDefaults() ...{
configPathText.setText(CS_CONFIG_PATH_DEFAULT);
}
/** *//**
* 父类方法,单击“应用”按钮时执行此方法,将文本框值保存并弹出成功的提示信息
*/
protected void performApply() ...{
doSave(); //自定义方法,保存设置
MessageDialog.openInformation(getShell(), "", "成功保存修改!");
}
/** *//**
* 父类方法,单击“确定”按钮时执行此方法,将文本框值保存并弹出成功的提示信息。
* @return true成功退出
*/
public boolean performOk() ...{
doSave();
MessageDialog.openInformation(getShell(), "", "修改在下次启动时生效!");
return true;
}
/** *//**
* 自定义方法,保存文本框的值。
*/
private void doSave() ...{
ps.setValue(CS_CONFIG_PATH, configPathText.getText());
}
}
然后在plugin.xml中利用扩展点org.eclipse.ui.preferencePages实现首选项:
<extension
point="org.eclipse.ui.preferencePages">
<page
category="com.winscad.preferred.RootPreferencePage"
class="com.winscad.preferred.Cs_Config_Path_PreferencePage"
id="com.winscad.preferred.Cs_Config_Path_PreferencePage"
name="%Winscad.ConfigurProperties.name"/>
</extension>
示例:
InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
2。使用java.util.ResourceBundle类的getBundle()方法
示例:
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());
3。使用java.util.PropertyResourceBundle类的构造函数
示例:
InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);
4。使用class变量的getResourceAsStream()方法
示例:
InputStream in = JProperties.class.getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
示例:
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
示例:
InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);
补充
Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:
InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);
以上内容引用自:http://blog.csdn.net/explorering/archive/2006/10/11/1330709.aspx
我在实际的RCP的项目中是这样做的:设置首选项,在首选项中配置资源文件的路径,然后在需要读取资源文件的地方,使用如下方法得到资源文件的路径:
public static final String CS_CONFIG_PATH = Activator.getDefault()
.getPreferenceStore().getString(Cs_Config_Path_PreferencePage.CS_CONFIG_PATH);
其中Cs_Config_Path_PreferencePage即为在首选项中配置资源文件路径的类:
package com.winscad.preferred;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import winscad.Activator;
public class Cs_Config_Path_PreferencePage extends PreferencePage implements
IWorkbenchPreferencePage,ModifyListener ...{
//为文本框定义键值
public static final String CS_CONFIG_PATH = "$CS_CONFIG_PATH";
//为文本框定义默认值
private static final String CS_CONFIG_PATH_DEFAULT
= "D:/kevin/workspace/winscadcs/properties/";
//定义文本框
private Text configPathText;
//定义一个IPreferenceStore对象
private IPreferenceStore ps;
// //定义并创建一个验证监听器
// private VerifyListener verifyListener = new VerifyListener(){
//
// public void verifyText(VerifyEvent e) {
// boolean b = ("0123456789".indexOf(e.text)>=0);
// }
// };
/** *//**
* 接口IWorkbenchPreferencePage的方法,负责初始化。在此方法中设置一个
* PreferenceStore对象,由此对象提供文本框值的读入和写出方法
*/
public void init(IWorkbench workbench) ...{
setPreferenceStore(Activator.getDefault().getPreferenceStore());
}
/** *//**
* 父类的界面创建方法
*/
protected Control createContents(Composite parent) ...{
ps = getPreferenceStore();//取得一个IPreferenceStore对象
Composite topComposite = new Composite(parent, SWT.NONE);
topComposite.setLayout(new GridLayout());
createDbConnectGroup(topComposite);
return topComposite;
}
/** *//**
* 创建资源文件连接组
*/
private void createDbConnectGroup(Composite topComp) ...{
Group group = new Group(topComp, SWT.NONE);
group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
group.setLayout(new GridLayout(2, false));
group.setText("资源文件配置");
new Label(group, SWT.NONE).setText("CS_CONFIG_PATH:");
configPathText = new Text(group, SWT.BORDER);
configPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
/**//*
* 从取出以前保存的值,并将其设置到文本框中,如果取出值为空
* 或者是空字串,则填入缺省值。
*/
String path = ps.getString(CS_CONFIG_PATH);
if (path == null || path.trim().equals(""))
configPathText.setText(CS_CONFIG_PATH_DEFAULT);
else
configPathText.setText(path);
/**//*
* 添加事件监听,this代表本类,因本类也实现了ModifyListener接口,
* 所以本类可以做为监听器使用
*/
configPathText.addModifyListener(this);
}
/** *//**
* 本类实现ModifyListener接口的方法,当三个文本框中发生修改时将执行此方法。
* 方法中对输入值进行了验证并将“确定”、“应用”两按钮使能。
*/
public void modifyText(ModifyEvent e) ...{
String errorStr = null;//将原错误信息清空
if (configPathText.getText().trim().length() == 0) ...{
errorStr = "PATH不能为空!";
}
setErrorMessage(errorStr);//errorStr=null时复原为正常的提示文字
setValid(errorStr == null);//“确定”按钮
getApplyButton().setEnabled(errorStr == null);//“应用”按钮
}
/** *//**
* 父类方法,单击“复原缺省值”按钮时将执行此方法,取出缺省值设置到文本框中。
*/
protected void performDefaults() ...{
configPathText.setText(CS_CONFIG_PATH_DEFAULT);
}
/** *//**
* 父类方法,单击“应用”按钮时执行此方法,将文本框值保存并弹出成功的提示信息
*/
protected void performApply() ...{
doSave(); //自定义方法,保存设置
MessageDialog.openInformation(getShell(), "", "成功保存修改!");
}
/** *//**
* 父类方法,单击“确定”按钮时执行此方法,将文本框值保存并弹出成功的提示信息。
* @return true成功退出
*/
public boolean performOk() ...{
doSave();
MessageDialog.openInformation(getShell(), "", "修改在下次启动时生效!");
return true;
}
/** *//**
* 自定义方法,保存文本框的值。
*/
private void doSave() ...{
ps.setValue(CS_CONFIG_PATH, configPathText.getText());
}
}
然后在plugin.xml中利用扩展点org.eclipse.ui.preferencePages实现首选项:
<extension
point="org.eclipse.ui.preferencePages">
<page
category="com.winscad.preferred.RootPreferencePage"
class="com.winscad.preferred.Cs_Config_Path_PreferencePage"
id="com.winscad.preferred.Cs_Config_Path_PreferencePage"
name="%Winscad.ConfigurProperties.name"/>
</extension>
相关文章推荐
- java读取.properties配置文件的几种方法
- java读取properties文件的几种方法
- java几种读取.properties文件的方法
- java读取properties文件的几种方法
- java读取properties文件的几种方法
- java对配置文件.properties文件读取的几种方法
- java读取properties文件的几种方法
- java读取.properties配置文件的几种方法
- java读取.properties配置文件的几种方法
- java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
- java读取properties文件的几种方法
- java读取properties文件的几种方法
- java读取.properties配置文件的几种方法
- Java中从properties配置文件中读取信息的几种方法
- java读取.properties配置文件的几种方法
- 读取properties文件的几种方法
- java读取.properties配置文件的几种方法操作
- java读取.properties配置文件的几种方法
- java读取properties文件的几种方法
- Java读取Properties文件的几种方法