0

gwt に GUI を備えたアプリがあります。この gui を使用して変更したい (これがサブ質問です: .properties ファイルを変更する方が良い方法org.apache.commons.configurationは?どのように...))) .properties ファイル。たとえば、次の .properties ファイルを作成しました。

################################################################################
# User permissions                                                             #
################################################################################

users = admin, root, guest
users.admin.keywords = admin
users.admin.regexps = test-5, test-7

users.root.keywords = root
users.root.regexps = *

users.guest.keywords = guest
users.guest.regexps = *

keywordsたとえば、管理者に追加する方法は?

UPD: これは、構成ファイルを変更したい構成クラスでの私の作業です:

    public class Config {

    private static final Config ourInstance = new Config();
    private static final CompositeConfiguration prop = new CompositeConfiguration();

    public static Config getInstance() {
        return ourInstance;
    }

    public Config(){
    }

    public synchronized void load() {
        try {
            prop.addConfiguration(new SystemConfiguration());

            System.out.println("Loading /rules.properties");
            final PropertiesConfiguration p = new PropertiesConfiguration();
            p.setPath("/home/mikhail/bzrrep/DLP/DLPServer/src/main/resources/rules.properties");
            p.load();
            prop.addConfiguration(p);

        } catch (ConfigurationException e) {
            e.printStackTrace();
        }

        final int processors = prop.getInt("server.processors", 1);

        // If you don't see this line - likely config name is wrong
        System.out.println("Using processors:" + processors);
    }

    public void setKeyword(String customerId, String keyword){
        prop.setProperty("users." + customerId + ".keywords", prop.getProperty("users." + customerId + ".keywords") + ", " + keyword);
        prop.
    }

    public void setRegexp(String customerId, String regexp)
    {}
}
4

3 に答える 3

1

フォローしてみてください

Properties prop = new Properties();

        try {
            //set the properties value
            prop.setProperty("users.guest.keywords", "keyword");
            prop.setProperty("users.guest.regexps", "regexps");    
            prop.store(new FileOutputStream("config.properties"), null);

        } catch (IOException ex) {
            ex.printStackTrace();
        }

それが役に立てば幸い

于 2013-04-09T13:19:47.150 に答える
1

小道具をロードする

void getPropertiesFromFile( Properties props, String fileName )
{
    try {
        File file = new File( fileName ) ;
        if (!file.exists())
            return ;

        FileInputStream in = new FileInputStream( file ) ;

        try {
            props.load( in ) ;
        } finally {
            in.close() ;
        }
    } catch (Exception e) {
    }
}

注: おそらく、ファイルからではなく、classLoader.getResource(); を使用してロードすることをお勧めします。コードが少し変わります。

次に、名前を反復処理して、必要なものを見つけます

for (String name : props.keys) {
   if (name.startWith("users.admin.")) {
       String value = props.get(name);
       ...
   }
}

反復中に小道具を変更する場合は、次のように props.keys をラップする必要があります

for (String name : new HashSet(props.keys)) {

完了したら、それらを保存します

    FileOutputStream fos = null;
    try {
        File file = new File("abc");
        fos = new FileOutputStream(file);
        props.store(fos, null);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (fos != null) {
            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
于 2013-04-09T13:39:13.847 に答える
0

元の質問に答えます。

boolean String.startsWith(<prefix>) 
于 2013-04-09T13:21:08.127 に答える