我试图将属性加载到某些脚本中。当我这样做时它会起作用:
public class MyClass {
public static void myMethod() {
Properties prop = new Properties();
InputStream config = Properties.class.getResourceAsStream("/config/config");
try {
prop.load(config);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(prop.getProperty("placeholder"));
这将成功打印出值"占位符"在/config/config
文本文件的控制台中。
我想让它变得更容易并实现数据抓取类,实现switch
块来区分不同的属性文件。它如下所示:
public class Data {
public static Properties getProperties(String file) {
Properties prop = new Properties();
switch (file) {
case "config":
InputStream config = Properties.class.getResourceAsStream("/config/config");
try {
prop.load(config);
} catch (IOException e) {
e.printStackTrace();
}
break;
case "objectlocations":
InputStream objectlocations = Properties.class.getResourceAsStream("/properties/objectlocations");
try {
prop.load(objectlocations);
} catch (IOException e) {
e.printStackTrace();
}
break;
}
return prop;
}
}
使用这个类,根据我需要的属性,我可以调用我想要调用的文件。
这一切都会结束,直到我尝试将其重新放回MyClass.myMethod
:
public class MyClass {
public static void myMethod() {
Properties prop = new Properties();
Data.getProperties("config");
System.out.println(prop.getProperty("placeholder"));
像这样实现它打印出" null"在控制台中,告诉我属性永远不会从Data.getProperties("config");
加载。
使用getProperties
方法,我需要添加,移动或移除以成功加载属性?这是我的交换机的问题,如果是这样,我应该为每个文件制作不同的方法吗?
提前致谢。
答案 0 :(得分:1)
问题在于以下几行:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp1;
fp1 = fopen("math.dat", "r");
char ch;
int i=0;
while (1) {
ch = fgetc(fp1);
if (ch == '3')
i++;
if (ch == EOF)
break;
}
printf("there is : %d matches\n", i);
return(0);
}
Data.getProperties行返回一个Properties类型,其中包含您要查找的信息。您需要将该对象分配给本地Properties对象。
如果您将上述行更改为Properties prop = new Properties();
Data.getProperties("config");
,您将获得您正在寻找的对象。