java 中读取 properties/xml/json 文件

2018-11-10  本文已影响32人  Ethan_zyc

java 项目中很重要的一步就是读取配置文件,主要是 properties 和 xml 文件,json 文件没见过,但觉得 json 文件和这两个类似,就顺便看了一下,前端最常用的配置文件不就一个 package.json 嘛。

image-20181110155441844

这是本文代码的文件结构,很简单。

需用用的的 jar 包

image-20181110160043613

网上很容易找到,如果找不到可以私信我。

读取 properties 文件

test.properties 中的内容:

name=ethan
home=jiangsunantong
age=24

代码:

private static void readProperties() throws IOException {
    Properties properties = new Properties();
    properties.load(new FileInputStream("resources/test.properties"));
    String propName = properties.getProperty("name");
    System.out.println("propName:" + propName);
}

输出:

propName:ethan

读取 xml 文件

demo.xml 中的内容:

<?xml version="1.0" encoding="utf-8" ?>
<students color="red">
    <student>
        <name>ethan</name>
        <age>20</age>
    </student>
    <student>
        <name>ethan1</name>
        <age>21</age>
    </student>
    <student>
        <name>ethan2</name>
        <age>22</age>
    </student>
    <student>
        <name>ethan3</name>
        <age>23</age>
    </student>
</students>

代码:

private static void readXML() throws DocumentException {
    SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(new File("resources/demo.xml"));
    Element element = document.getRootElement();
    Attribute attribute = element.attribute("color");
    System.out.println(attribute.getValue());
    List<Element> list = element.elements("student");
    for (Element em : list) {
        System.out.println(em.element("name").getText());
        System.out.println(em.element("age").getText());
    }
}

输出:

red
ethan
20
ethan1
21
ethan2
22
ethan3
23

这里采用的是 Dom4j 解析,还有别的方法可以参考这篇

读取 json 文件

这里需要注意一下,我一开始运行的时候会报这个错:

image-20181110161237694

查看源代码:

image-20181110161448615 image-20181110161549422

很明显问题在于我的 json 文件中出现了回车或者换行符,也就是说整个 json 文件只能有一行。

image-20181110161736268

这是修改之前的,可以利用这个正则表达式替换一下:\r|\n|\s,虽然空格不影响,但还是一起删除了。

修改之后:

{"name":"ethan","age":18,"books":[{"bName":"java","price":80},{"bName":"js","price":60}]}

代码:

private static void readJson() throws IOException, JSONException {
    BufferedReader bufferedReader = new BufferedReader(new FileReader("resources/test.json"));
    String line = null;
    while ((line = bufferedReader.readLine()) != null) {
        JSONObject jsonObject = new JSONObject(line);
        Iterator<String> keys = jsonObject.keys();
        while ((keys.hasNext())) {
            String key = keys.next();
            System.out.println(key + ":" + jsonObject.get(key));
        }
    }
}

输出:

books:[{"bName":"java","price":80},{"bName":"js","price":60}]
name:ethan
age:18

这里只循环了一层,可以利用递归把每一项都读出来。以及一些增删改的操作可以参考这篇

上一篇下一篇

猜你喜欢

热点阅读