您的位置:首页 > 运维架构

读取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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: