关于java工程文件读取的问题

实际在工程开发过程中,经常会遇到如何读取文件内容,在各种不同的工程下,读取文件差异较大

getResource()通过URL对象来定位资源,getResouceAsStream()是取得该资源的输入流的引用而正确读取数据。

普通文件读取

1
2
ClassLoader classLoader = getClass().getClassLoader();
String filePath = classLoad.getResource("path").getFile();

如果path地址为绝对路径,则读取的是classpath目录
如果path地址为相对路径,将读取的classspath路径的相对目录

JAR包文件读取

从jar包中读取配置文件,只能使用这种方式

1
2
ClassLoad classLoad = getClass().getClassLoader();
InputStream in = classLoad.getResouceAsStream("path")

这种情况下的path为JAR包中文件路径
如果path为绝对路径,则读取的地址为Jar包根路径
如果path为相对路径,则读取到的结果为Jar包根路径的相对路径

注意:
如果使用的是this获取到的Class,则下面获取的路径都是相对当前类结果编译出来的class文件路径,此种方式不推荐使用

1
2
this.getClass().getResource()
this.getClass().getResourceAsStream()

xuzs wechat
欢迎您扫一扫上面的微信,及时与我交流!
坚持原创技术分享,您的支持将鼓励我继续创作!