为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

尚方宝剑之说 2021-04-29 18:38:53
从资源文件夹读取文件的许多教程都使用类加载器。但是,使用该方法无法解决静态警告问题,并且结果始终是空指针异常。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。
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

或者,您可以尝试一次阅读所有内容:


    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();。


查看完整回答
反对 回复 2021-05-12
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信