Java 获取Resource目录下的文件
有两种方式:
Java代码中的类,要获取Resource资源文件目录下文件
绝对路径寻址
注意这个 / 址的是根目录,用绝对路径,可能会出现的问题是,你的程序在windows上可以用,但是在linux不能用,原因在于,你这根目录在windows环境址你的src目录
放到linux环境,就可能执行你linux的根目录了,会导致 file not exist
针对上面的问题,可以考虑相对路径寻址:
例子:
项目需要在 resource目录下面放一个hadoop 包, 这包远程提交到集群上运行,
上面就采用了相对路径
根据该路径,可以找到对应的hadoop.jar文件。
java中jar包内的类访问jar包内部的资源文件的路径问题
在本地项目中,若我们要访问项目中的资源文件,则一般使用相对路径或者用System.getProperities("user.dir")得到项目根目录,然后再访问资源文件,但是在将该工程和资源文件打包为jar包,运行该jar文件时,会显示找不到资源文件的错误。
在如下项目结构树中,项目根目录为nlpir,如果我们要在src下的某个package的某个java文件中访问blackWhite文件夹中的文件,则相对路径为"blackWhite/....."即可。但是在打包为jar包时,即使我们把blackWhite文件夹同样加入到打包的文件行列,在运行该jar包时,会出错:找不到blackWhite中某文件的路径。
解决方法:使用Class.getResource或者是ClassLoader.getResourceAsStream()将文件内容放到InputStream中,具体使用如下:
或者为:
注意,使用class的getRescource时,要注意路径前要加"/",即根目录,此处的根目录是src
若像如下使用:
则会出错如下:
使用ClassLoader时,如下:
在使用ClassLoader时,路径前面不能加"/