我有一个以int[]
为输入的方法。
methodABC(int[] nValue)
我想从Java属性文件中获取此nValue
nValue=1,2,3
如何从配置文件中读取此内容,还是以其他格式存储?
我尝试的是(changing the nValue to 123 instead of 1,2,3
):
int nValue = Integer.parseInt(configuration.getProperty("nnValue"));
我们如何做到这一点?
答案 0 :(得分:5)
原始属性文件是如此90%:)你应该使用json文件,
无论如何:
如果你有这个:
nValue=1,2,3
然后读取nValue,将其拆分为逗号并将流/循环解析转换为int
String property = prop.getProperty("nValue");
System.out.println(property);
String[] x = property.split(",");
for (String string : x) {
System.out.println(Integer.parseInt(string));
}
因为java 8:
int[] values = Stream.of(property.split(",")).mapToInt(Integer::parseInt).toArray();
for (int i : values) {
System.out.println(i);
}
答案 1 :(得分:4)
使用String.split
和Integer.parseInt
。使用Streams,您可以在一行中完成:
String property = configuration.getProperty("nnValue")
int[] values = Stream.of(property.split(",")).mapToInt(Integer::parseInt).toArray()
答案 2 :(得分:1)
您需要将值(nValue=1,2,3
)仅作为字符串和split
字符串(","
)读取,然后转换为{{1}数组如下所示:
int[]
现在,您可以通过传递//split the input string
String[] strValues=configuration.getProperty("nnValue").split(",");
int[] intValues = strValues[strValues.length];//declare int array
for(int i=0;i<strValues.length;i++) {
intValues[i] = Integer.parseInt(strValues[i]);//populate int array
}
数组来调用该方法,如下所示:
intValues
答案 3 :(得分:1)
如果使用Spring,则可以直接读取属性中的数组(如果需要更复杂的数据,还可以使用地图)。例如。在application.properties中:
nValue={1,2,3}
并在您的代码中:
@Value("#{${nValue}}")
Integer[] nValue;
然后你可以在任何你想要的地方使用nValue。
答案 4 :(得分:-2)
以下是如何在java中读取Property文件的属性:
byte[] bytes = inputString.getBytes("UTF-8");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream os = new GZIPOutputStream(baos);
os.write(bytes, 0, bytes.length);
os.close();
byte[] result = baos.toByteArray();
System.out.println(result);
byte [] base64=Base64.encodeBase64(result);
String send= new String(base64,"UTF-8");