使用属性文件中的属性值创建文件实例

时间:2018-10-22 10:02:47

标签: java spring-boot

我正在尝试创建文件实例以从属性值解析html记录。问题出在我必须放在文件属性中的文件的URL中,这是我的示例:

enter image description here

读取文件的对应代码:

public void extraxtElementWithoutId() {
        Map<String,List<List<Element>>> uniciteIds = new HashMap<String,List<List<Element>>>();
        FileReader fileReader = null;
        Document doc = null;
        try {
            fileReader = new FileReader(new ClassPathResource(FILEPROPERTYNAME).getFile());
            Properties prop = new Properties();
            prop.load(fileReader);
            Enumeration<?> enumeration = prop.propertyNames();
            List<List<Element>> fiinalReturn = null;
            while (enumeration.hasMoreElements()) {
                String path = (String) enumeration.nextElement();
                System.out.println("Fichier en question : " + prop.getProperty(path));
                URL url = getClass().getResource(prop.getProperty(path));
                System.out.println(url.getPath());
                File inputFile = new File(url.getPath());
                doc = Jsoup.parse(inputFile, "UTF-8");
                //fiinalReturn = getListofElements(doc);
                //System.out.println(fiinalReturn);
                fiinalReturn = uniciteIds.put("Duplicat Id", getUnicityIds(doc));
                System.out.println(fiinalReturn);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try{
                fileReader.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
    }

预先感谢您, 最好的问候。

1 个答案:

答案 0 :(得分:1)

您在行中犯了一个非常常见的错误-

URL url = getClass().getResource(prop.getProperty(path));

尝试将属性值设置为(通过删除 src )-/testHtmlFile/test.html,依此类推。不要更改代码。

UrlEnterer1 = / testHtmlFile / test.html ,而不是在其前添加 src

prop.getProperty(path)应该与文件的构建路径位置相同。检查构建目录以及这些文件的存储方式。这些不是存储在src下,而是直接存储在build目录下。

This answer解释了一些有关从类路径读取文件的路径值的信息。

此外,作为旁注(与问题无关),请尝试不做prop.getProperty(path),而是使用org.springframework.beans.factory.annotation.Value批注直接在类中注入属性值。