在Java中,如何从配置文件(如.properties或XML)中定义并读取一个数组类型的集合?
时间: 2024-10-23 20:21:05 浏览: 32
在Java中,读取来自`.properties`或XML配置文件的数组类型集合涉及到两个主要部分:定义和读取。这里以`Properties`和`JAXB`为例分别说明。
### 1. 用`Properties`读取`.properties`文件中的数组
`.properties`文件中数组通常是通过逗号分隔的一系列字符串存储的。首先,你需要将数组内容转换为字符串数组:
```java
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class ConfigLoader {
private static final String ARRAY_KEY = "arrayKey";
public static String[] getArrayFromProperties(String filePath) {
Properties props = new Properties();
try (FileInputStream fis = new FileInputStream(filePath)) {
props.load(fis);
} catch (IOException e) {
throw new RuntimeException("Error loading properties file", e);
}
String arrayStr = props.getProperty(ARRAY_KEY);
if (arrayStr == null) {
throw new IllegalArgumentException("Array key not found");
}
return arrayStr.split(",");
}
}
```
### 2. 用JAXB读取XML文件中的数组
如果你的配置文件是XML,并且数组作为数组标签存在,你可以使用JAXB(Java Architecture for XML Binding)来进行解析:
```java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import java.io.File;
import java.util.Arrays;
public class XmlConfigLoader {
private static final String ARRAY_TAG = "myArray";
public static String[] getArrayFromXml(File xmlFile) {
try (XMLInputFactory factory = XMLInputFactory.newFactory()) {
XMLStreamReader reader = factory.createXMLStreamReader(xmlFile);
Unmarshaller unmarshaller = JAXBContext.newInstance(MyClass.class).createUnmarshaller();
MyClass obj = (MyClass) unmarshaller.unmarshal(reader);
// 获取数组
return obj.getArray();
} catch (Exception e) {
throw new RuntimeException("Error parsing XML", e);
}
}
// 假设有一个名为MyClass的实体类,包含一个String数组
public static class MyClass {
private String[] array;
// getter and setter...
public String[] getArray() { return array; }
}
}
```
注意,为了上述代码工作,你需要在`MyClass`中定义一个`String[]`字段,并提供getter方法。
阅读全文