发布时间:2025-06-24 18:37:57 作者:北方职教升学中心 阅读量:495
使用封装好的类(jar包可用)
- 方法五:Spring提供的ClassPathResource
- 方法六:Hutool提供的ResourceUtil
四、方法四,只不过做了一些封装,更方便开发方法五:Spring提供的ClassPathResource
publicBufferedReaderfunction5(StringfileName)throwsIOException{ClassPathResourceclassPathResource =newClassPathResource(fileName);InputStreaminputStream =classPathResource.getInputStream();returnnewBufferedReader(newInputStreamReader(inputStream));}
方法六:Hutool提供的ResourceUtil
publicBufferedReaderfunction6(StringfileName)throwsIOException{List<URL>resources =ResourceUtil.getResources(fileName);URLresource =resources.get(0);returnnewBufferedReader(newInputStreamReader(resource.openStream()));}
四、
先获取绝对路径再读取文件(jar包里会获取不到)
方法一:类加载器的getResource().getPath()获取目录路径
publicBufferedReaderfunction1(StringfileName)throwsFileNotFoundException{Stringpath =this.getClass().getClassLoader().getResource("").getPath();StringfilePath =path +fileName;returnnewBufferedReader(newFileReader(filePath));}
方法二:类加载器的getResource().getPath()获取文件路径
publicBufferedReaderfunction2(StringfileName)throwsIOException{StringfilePath =this.getClass().getClassLoader().getResource(fileName).getPath();filePath =URLDecoder.decode(filePath,"UTF-8");returnnewBufferedReader(newFileReader(filePath));}
二、一、先获取绝对路径再读取文件(jar包里会获取不到)
- 方法一:类加载器的getResource().getPath()获取目录路径
- 方法二:类加载器的getResource().getPath()获取文件路径
二、测试jar包中是否可用的代码1)编写接口
@Value("${function}")privateintfunction;@GetMapping("/test")publicStringtest()throwsIOException{StringfileName ="测试.txt";System.out.println("调用function"+function);BufferedReaderbufferedReader =null;switch(function){case1:bufferedReader =function1(fileName);break;case2:bufferedReader =function2(fileName);break;case3:bufferedReader =function3(fileName);break;case4:bufferedReader =function4(fileName);break;case5:bufferedReader =function5(fileName);break;case6:bufferedReader =function6(fileName);break;default:}StringBuildersb =newStringBuilder();Stringline =null;while((line =bufferedReader.readLine())!=null){sb.append(line).append("n");}System.out.println(sb);returnsb.toString();}
2)启动jar包指令
java -jar -Dfunction=6 read-resource-1.0-SNAPSHOT.jar
- 更改
-Dfunction=6
的值就能动态切换方法了。使用封装好的类(jar包可用)源码里还是方法三、直接获取文件流(jar包可用)
方法三:ClassLoader对象的getResourceAsStream()
publicBufferedReaderfunction3(StringfileName)throwsIOException{InputStreaminputStream =this.getClass().getClassLoader().getResourceAsStream(fileName);if(inputStream ==null){thrownewFileNotFoundException(fileName);}returnnewBufferedReader(newInputStreamReader(inputStream));}
方法四:Class对象的getResourceAsStream()
- ClassLoader的getResource()是从类路径的根路径查找的,所以不加“/”也可以
- Class的getResource()是从当前类所在的包路径查找资源,所以如果不加“/”表示去根路径查找的话,是找不到的
publicBufferedReaderfunction4(StringfileName)throwsIOException{InputStreaminputStream =this.getClass().getResourceAsStream("/"+fileName);if(inputStream ==null){thrownewFileNotFoundException(fileName);}returnnewBufferedReader(newInputStreamReader(inputStream));}
三、直接获取文件流(jar包可用)
- 方法三:ClassLoader对象的getResourceAsStream()
- 方法四:Class对象的getResourceAsStream()
- 三、