我在webapplication中使用wicket。我将字符串保存在一些.properties文件中,如下所示:
foo.properties
page.label=dummy
在html文件中,我可以按如下方式访问字符串page.label
:
的index.html
<wicket:message key="page.label">Default label</wicket:message>
现在我为我的应用程序编写了一些junit测试用例,并希望访问属性文件中保存的字符串。我的问题是,如何从属性文件中读取字符串?
答案 0 :(得分:4)
试试这个
import java.io.FileInputStream;
import java.util.Properties;
public class MainClass {
public static void main(String args[]) throws IOException {
Properties p = new Properties();
p.load(new FileInputStream("foo.properties"));
Object label = p.get("page.label");
System.out.println(label);
}
}
此部分允许您从任何位置读取所有属性文件,并在属性
中加载它们import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
public class MainClass {
private static String PROPERTIES_FILES_PATHNAME = "file:///Users/ftam/Downloads/test/";// for mac
public static void main(String args[]) throws Exception {
Properties p = new Properties();
List<File> files = getFiles();
for(File file : files) {
FileInputStream input = new FileInputStream(file);
p.load(input);
}
String label = (String) p.get("page.label");
System.out.println(label);
}
private static List<File> getFiles() throws IOException, URISyntaxException {
List<File> filesList = new ArrayList<File>();
URL[] url = { new URL(PROPERTIES_FILES_PATHNAME) };
URLClassLoader loader = new URLClassLoader(url);
URL[] urls = loader.getURLs();
File fileMetaInf = new File(urls[0].toURI());
File[] files = fileMetaInf.listFiles();
for(File file : files) {
if(!file.isDirectory() && file.getName().endsWith(".properties")) {
filesList.add(file);
}
}
return filesList;
}
}
答案 1 :(得分:2)
Wicket有自己的方法来本地化资源,同时考虑组件树。请参阅the javadoc for the StringResourceLoader。
加载资源的一种方法是:
WicketTester tester = new WicketTester(new MyApplication());
tester.startPage(MyPage.class);
Localizer localizer = tester.getApplication().getResourceSettings()
.getLocalizer();
String foo = localizer.getString("page.label",tester.getLastRenderedPage(), "")
答案 2 :(得分:1)
使用Apache Commons Configuration是一个不错的选择!
答案 3 :(得分:1)
您可以使用load
,然后使用get("page.label")
答案 4 :(得分:0)
在课堂上有这个字段:
import java.util.ResourceBundle;
private static ResourceBundle settings = ResourceBundle.getBundle("test",Locale.getDefault());
然后是test.properties
这样的文件:
com.some.name=someValueHere
最后,您可以通过以下方式访问属性值:
private String fieldName = settings.getString("com.some.name");