Java 获取linux根目录下的文件夹_Java 获取Resource目录下的文件解决办法

Java 获取Resource目录下的文件

2f35c239021d0a38e614d843faebcb7a.png

有两种方式:

Java代码中的类,要获取Resource资源文件目录下文件

绝对路径寻址

64042c1b4544cababeae5c0a80876ce6.png

注意这个 / 址的是根目录,用绝对路径,可能会出现的问题是,你的程序在windows上可以用,但是在linux不能用,原因在于,你这根目录在windows环境址你的src目录

放到linux环境,就可能执行你linux的根目录了,会导致 file not exist

针对上面的问题,可以考虑相对路径寻址:

例子:

528704cb6240a363cd17d9950eaeab97.png

项目需要在 resource目录下面放一个hadoop 包, 这包远程提交到集群上运行,

上面就采用了相对路径

根据该路径,可以找到对应的hadoop.jar文件。

java中jar包内的类访问jar包内部的资源文件的路径问题

在本地项目中,若我们要访问项目中的资源文件,则一般使用相对路径或者用System.getProperities("user.dir")得到项目根目录,然后再访问资源文件,但是在将该工程和资源文件打包为jar包,运行该jar文件时,会显示找不到资源文件的错误。

在如下项目结构树中,项目根目录为nlpir,如果我们要在src下的某个package的某个java文件中访问blackWhite文件夹中的文件,则相对路径为"blackWhite/....."即可。但是在打包为jar包时,即使我们把blackWhite文件夹同样加入到打包的文件行列,在运行该jar包时,会出错:找不到blackWhite中某文件的路径。

33ab18e4d5a97c0ab7e1c7c1ebdc1f26.png

解决方法:使用Class.getResource或者是ClassLoader.getResourceAsStream()将文件内容放到InputStream中,具体使用如下:

5444fec51b25b19ac4290ff5c06c246e.png

或者为:

c4ebe1ca34b54dae2465786e9beb187b.png

注意,使用class的getRescource时,要注意路径前要加"/",即根目录,此处的根目录是src

若像如下使用:

fb9be207519248c3e096772f9e9ead20.png

则会出错如下:

c7e9340ff318bd6b9dcc2c21f39e1917.png

使用ClassLoader时,如下:

5679486ad1c9080398d56daa95ff5cff.png

在使用ClassLoader时,路径前面不能加"/