如何正确地从资源文件夹中获取文件

从资源文件夹读取文件的许多教程都使用类加载器。但是,使用该方法无法解决静态警告问题,并且结果始终是空指针异常。


public class Test {

    public static void main(String[] args) {

        StringBuilder contentBuilder=new StringBuilder();

        ClassLoader classLoader=Test.class.getClassLoader();

        File file=new File(classLoader.getSystemResource("test.html").getFile());

        try {

            BufferedReader buffer=new BufferedReader(new FileReader(file));

            String sCurrentLine="";

            while ((sCurrentLine=buffer.readLine())!=null) {

                contentBuilder.append(sCurrentLine);

            }

            buffer.close();

        } catch (Exception e) {

            e.printStackTrace();

            System.exit(-1);

        }

        String content=contentBuilder.toString();

        System.out.println("content="+content);

    }

}

我的IDE在“文件”行上的警告是:


应该以静态方式访问ClassLoader类型的静态方法getSystemResource(String)


我无法弄清楚如何消除该警告,如果我只是忽略它并运行代码,则会得到一个空指针异常。为什么会得到这个,如何解决?TIA。


尚方宝剑之说
浏览 121回答 2
2回答

喵喔喔

或者,您可以尝试一次阅读所有内容:    ClassLoader loader = Thread.currentThread().getContextClassLoader();    String content;    try {        content = new String(Files.readAllBytes(Paths.get(loader.getResource("test.html").toURI())), StandardCharsets.UTF_8);    } catch (Exception e) {        e.printStackTrace();    }如果您使用的是maven,请记住根据您的情况设置资源(asSources Root或Test Sources Root)。顺便说一句,您的解决方案可以使用Test.class.getClassLoader();。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java