读取Properties文件的几种方法

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(2false));
        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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值