代理网站系统,无远低代码开发平台,辽宁省建设银行网站,wordpress使用缩略图系列文章目录 提示#xff1a;这里可以添加系列文章的所有文章的目录#xff0c;目录需要自己手动添加 例如#xff1a;第一章 Python 机器学习入门之pandas的使用 提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目…系列文章目录 提示这里可以添加系列文章的所有文章的目录目录需要自己手动添加 例如第一章 Python 机器学习入门之pandas的使用 提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、获取绝对路径再读取文件(jar包里会获取不到)二、直接获取文件流jar包可用1.ClassLoader对象的getResourceAsStream()2.Class对象的getResourceAsStream() 三、使用封装好的类jar包可用1、Spring提供的ClassPathResource2、Hutool提供的ResourceUtil 测试jar包中是否可用的代码 前言
提示这里可以添加本文要记录的大概内容
例如随着人工智能的不断发展机器学习这门技术也越来越重要很多人都开启了学习机器学习本文就介绍了机器学习的基础内容。 提示以下是本篇文章正文内容下面案例可供参考
一、获取绝对路径再读取文件(jar包里会获取不到)
方法一类加载器的getResource().getPath()获取目录路径 /*** 方法一使用类加载器的getResource().getPath()获取全路径再拼接文件名最后根据文件路径获取文件流* 备注jar包不可用因为jar包中没有一个实际的路径存放文件** param fileName* return* throws FileNotFoundException*/public BufferedReader function1(String fileName) throws FileNotFoundException {// /Users/zunf/code/read-resource/target/classes/String path this.getClass().getClassLoader().getResource().getPath();// /Users/zunf/code/read-resource/target/classes/测试.txtString filePath path fileName;return new BufferedReader(new FileReader(filePath));}
方法二类加载器的getResource().getPath()获取文件路径 /*** 方法二使用类加载器的getResource().getPath()传参直接获取文件路径再根据文件路径获取文件流* 备注jar包不可用因为jar包中没有一个实际的路径存放文件** param fileName* return* throws IOException*/public BufferedReader function2(String fileName) throws IOException {// /Users/zunf/code/read-resource/target/classes/%e6%b5%8b%e8%af%95.txtString filePath this.getClass().getClassLoader().getResource(fileName).getPath();//可以看到上面读取到路径的中文被URLEncoder编码了所以需要先用URLDecoder解码一下恢复中文filePath URLDecoder.decode(filePath, UTF-8);return new BufferedReader(new FileReader(filePath));}
二、直接获取文件流jar包可用
1.ClassLoader对象的getResourceAsStream() /*** 方法三使用类加载器的getResourceAsStream()直接获取文件流* 备注jar包可用** param fileName* return* throws IOException*/public BufferedReader function3(String fileName) throws IOException {//getResourceAsStream(fileName) 等价于getResource(fileName).openStream()InputStream inputStream this.getClass().getClassLoader().getResourceAsStream(fileName);if (inputStream null) {throw new FileNotFoundException(fileName);}return new BufferedReader(new InputStreamReader(inputStream));}
2.Class对象的getResourceAsStream()
ClassLoader 的getResource()是从类路径的根路径查找的所以不加“/”也可以 Class 的getResource()是从当前类所在的包路径查找资源所以如果不加“/”表示去根路径查找的话是找不到的 /*** 方法四使用Class对象的getResourceAsStream()获取文件流* 备注jar包可用** param fileName* return* throws IOException*/public BufferedReader function4(String fileName) throws IOException {//getResourceAsStream(fileName) 等价于getResource(fileName).openStream()InputStream inputStream this.getClass().getResourceAsStream(/ fileName);if (inputStream null) {throw new FileNotFoundException(fileName);}return new BufferedReader(new InputStreamReader(inputStream));}
三、使用封装好的类jar包可用
1、Spring提供的ClassPathResource /*** 方法五使用Spring提供的ClassPathResource获取* 备注jar包可用** param fileName* return* throws IOException*/public BufferedReader function5(String fileName) throws IOException {ClassPathResource classPathResource new ClassPathResource(fileName);InputStream inputStream classPathResource.getInputStream();return new BufferedReader(new InputStreamReader(inputStream));}
2、Hutool提供的ResourceUtil /*** 方法六使用Hutool的ResourceUtil* 备注jar包可用** param fileName* return* throws IOException*/public BufferedReader function6(String fileName) throws IOException {ListURL resources ResourceUtil.getResources(fileName);URL resource resources.get(0);return new BufferedReader(new InputStreamReader(resource.openStream()));}
测试jar包中是否可用的代码 //Jar包启动时根据传入的不同funcation值来选择调用哪个方法测试Value(${function})private int function; GetMapping(/test)public String test() throws IOException {//需要在resource里读取的文件String fileName 测试.txt;//调用方法System.out.println(调用function function);BufferedReader bufferedReader null;switch (function) {case 1:bufferedReader function1(fileName);break;case 2:bufferedReader function2(fileName);break;case 3:bufferedReader function3(fileName);break;case 4:bufferedReader function4(fileName);break;case 5:bufferedReader function5(fileName);break;case 6:bufferedReader function6(fileName);break;default:}//读取并输出StringBuilder sb new StringBuilder();String line null;while ((line bufferedReader.readLine()) ! null) {sb.append(line).append(\n);}System.out.println(sb);return sb.toString();}
到此这篇关于SpringBoot项目中读取resource目录下的文件六种方法的文章就介绍到这了