Java 如何找到以确切单词开头的字符串
我在gwt上有一个带有GUI的应用程序。使用此gui,我想更改(这是一个子问题:如何更好地更改.properties文件(我知道如何使用Java 如何找到以确切单词开头的字符串,java,string,apache-commons-config,Java,String,Apache Commons Config,我在gwt上有一个带有GUI的应用程序。使用此gui,我想更改(这是一个子问题:如何更好地更改.properties文件(我知道如何使用org.apache.commons.configuration)从中读取属性,但不知道如何编辑.properties文件(作为字符串或如何…)。例如:我编写了以下.properties文件: ################################################################################ # Us
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 = *
例如,如何为管理员添加关键字
UPD:
下面是我的config类,我想在其中更改配置文件:
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)
{}
}
试着跟随
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();
}
希望它有助于回答您原来的问题
boolean String.startsWith(<prefix>)
boolean String.startsWith()
用
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,则应按如下方式包装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();
}
}
}
这看起来是最好的解决方案。如果我希望某些属性具有多个值,例如:
users.guest.keywords=keyword1、keyword2、keyword3,该怎么办?它是否更好?<代码> PROSP.SETFATE(PROG.GETString(“用户”+“登录+”关键字)+新关键字)< /代码>?您可以根据您的便利性和应用需求对您的帖子中的代码部分进行格式化:正如我所理解的,我找到了从用户开始的字符串。至于我,我忘了说:我使用了properties道具
,但是CompositeConfiguration道具