在Java中,读取resource下的文件通常有两种方式:一种是通过类加载器获取资源文件的输入流,另一种是通过ClassPathResource或者FileSystemResource来获取资源文件,下面将详细介绍这两种方式。
1. 通过类加载器获取资源文件的输入流
这种方式是最常用的,也是最灵活的,你可以通过类加载器的getResourceAsStream方法来获取资源文件的输入流,然后通过InputStreamReader和BufferedReader来读取文件内容。
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("filename"); if (inputStream != null) { InputStreamReader reader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); } else { System.out.println("Resource file not found"); }
2. 通过ClassPathResource或者FileSystemResource来获取资源文件
这种方式相对简单,但是功能有限,你只能通过指定的路径来获取资源文件,不能通过文件名来获取。
ClassPathResource resource = new ClassPathResource("filename"); InputStream inputStream = resource.getInputStream(); if (inputStream != null) { InputStreamReader reader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); } else { System.out.println("Resource file not found"); }
3. 使用Spring框架的资源文件访问策略
如果你使用的是Spring框架,那么你可以使用Spring的资源文件访问策略来访问资源文件,Spring提供了多种资源文件访问策略,包括ClassPathContextResource、FileSystemResource等,你可以根据需要选择合适的策略。
ClassPathContextResource resource = new ClassPathContextResource("filename"); InputStream inputStream = resource.getInputStream(); if (inputStream != null) { InputStreamReader reader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(reader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } bufferedReader.close(); } else { System.out.println("Resource file not found"); }
4. 使用Java 8的NIO API读取资源文件
如果你使用的是Java 8,那么你可以使用NIO API来读取资源文件,这种方式比使用InputStream和BufferedReader更加高效。
try (Stream<String> lines = Files.lines(Paths.get(getClass().getClassLoader().getResource("filename").toURI()))) { lines.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); }
5. 使用第三方库Apache Commons I/O读取资源文件
如果你不想自己处理资源的读取,那么你可以使用Apache Commons I/O库,这个库提供了一种简单的方式来读取资源文件。
try (FileSystemResource resource = new FileSystemResource("filename")) { org.apache.commons.io.IOUtils.copy(resource.getInputStream(), System.out); } catch (IOException e) { e.printStackTrace(); }
6. 使用第三方库Spring Boot的ResourceLoader读取资源文件
如果你使用的是Spring Boot,那么你可以使用Spring Boot提供的ResourceLoader来读取资源文件,这种方式非常简单,只需要一行代码就可以完成。
Resource resource = resourceLoader.getResource("classpath:filename"); resource.getInputStream().forEach(System.out::println);
7. 使用第三方库BladeX读取资源文件
如果你使用的是BladeX框架,那么你可以使用BladeX提供的API来读取资源文件,这种方式非常简单,只需要一行代码就可以完成。
BladeX bladeX = BladeXFactory.me(); // or BladeXFactory.create() for Spring context auto scan mode, default is me() mode. String content = bladeX.fileContent("filename"); System.out.println(content); bladeX.__close__(); // close BladeX when you don't need it anymore to release resources and avoid memory leaks, especially in web application server environment like Tomcat, JBoss, WebSphere, WebLogic etc... ``` 以上就是Java读取resource下的文件的几种方式,你可以根据实际需求选择合适的方式。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/352928.html