Java读取文件的三种方式

2021-02-16  本文已影响0人  爱跳的老鼠君

在实际工作开发中,往往会遇到要从resource 目录里读取文件的需求, 我这里总结了三种方式。

  1. Classloader 读取。 比较适合单个文件的读取。
        InputStream inputStream = StudentAddBean.class.getClassLoader().getResourceAsStream("avro/User.avsc");
        Assert.notNull(inputStream);
        String str = IOUtils.toString(inputStream, "utf-8");
        System.out.println("method 1: \n" + str);
  1. 使用guava library里的Resource 类
        URL uri = Resources.getResource("avro/User.avsc");
        Assert.notNull(uri);
        String str2 = Resources.toString(uri, Charsets.UTF_8);
        System.out.println("method 2: \n" + str2);
  1. 使用spring里的PathMatchingResourcePatternResolver 类, 也是我个人最喜欢的一种方式,适合批量读取文件。
        PathMatchingResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = resourcePatternResolver.getResources("avro/**/*.avsc");

        Stream.of(resources).forEach(resource -> {
            try {
                String str3 = IOUtils.toString(resource.getInputStream(), "utf-8");
                System.out.println("method 3: \n" + str3);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });

上一篇 下一篇

猜你喜欢

热点阅读