在打成jar后运行,结果不能读取到文件。在jar里面对应的class路径下可以看到该文件,确定是有打包进去的。
此时通过 this.getClass().getResource("");方法无法正确获取文件。
用 InputStream inputStream=this.getClass().getResourceAsStream(""); 可以正确读取。
原因是什么呢?估计在调试过程中(没有打包成Jar),文件是真实存在于磁盘的某个目录。此时通过获取文件路径,是可以正常读取的,因为文件确实存在。
而打包成jar以后,实际上文件是存在于jar这个文件里面的资源文件。在磁盘是没有真实路径的。所以通过 this.getClass().getResource("");方法无法正确获取文件。
而InputStream inputStream=this.getClass().getResourceAsStream("");会指定要加载的资源路径与当前类所在包的路径一致。
因此能正常读取文件。