java 中读取 properties/xml/json 文件

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 中的内容:



    
        ethan
        20
    
    
        ethan1
        21
    
    
        ethan2
        22
    
    
        ethan3
        23
    

代码:

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 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 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

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

你可能感兴趣的:(java 中读取 properties/xml/json 文件)