我在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)
{}
}发布于 2013-04-09 13:19:47
试着跟随
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-09 13:39:13
负载道具
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-09 13:21:08
回答你原来的问题。
boolean String.startsWith(<prefix>) https://stackoverflow.com/questions/15902998
复制相似问题