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 >