Java怎么实现读取resources目录下的文件路径

Java怎么实现读取resources目录下的文件路径

本篇内容主要讲解“Java怎么实现读取resources目录下的文件路径”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现读取resources目录下的文件路径”吧!

打印文件的方法如下:

Java怎么实现读取resources目录下的文件路径

/***根据文件路径读取文件内容**@paramfileInPath*@throwsIOException*/publicstaticvoidgetFileContent(ObjectfileInPath)throwsIOException{BufferedReaderbr=null;if(fileInPath==null){return;}if(fileInPathinstanceofString){br=newBufferedReader(newFileReader(newFile((String)fileInPath)));}elseif(fileInPathinstanceofInputStream){br=newBufferedReader(newInputStreamReader((InputStream)fileInPath));}Stringline;while((line=br.readLine())!=null){System.out.println(line);}br.close();}

方式一

主要核心方法是使用getResource和getPath方法,这里的getResource("")里面是空字符串

publicvoidfunction1(StringfileName)throwsIOException{Stringpath=this.getClass().getClassLoader().getResource("").getPath();//注意getResource("")里面是空字符串System.out.println(path);StringfilePath=path+fileName;System.out.println(filePath);getFileContent(filePath);}

方式二

主要核心方法是使用getResource和getPath方法,直接通过getResource(fileName)方法获取文件路径,注意如果是路径中带有中文一定要使用URLDecoder.decode解码。

/***直接通过文件名getPath来获取路径**@paramfileName*@throwsIOException*/publicvoidfunction2(StringfileName)throwsIOException{Stringpath=this.getClass().getClassLoader().getResource(fileName).getPath();//注意getResource("")里面是空字符串System.out.println(path);StringfilePath=URLDecoder.decode(path,"UTF-8");//如果路径中带有中文会被URLEncoder,因此这里需要解码System.out.println(filePath);getFileContent(filePath);}

方式三

直接通过文件名+getFile()来获取文件。如果是文件路径的话getFile和getPath效果是一样的,如果是URL路径的话getPath是带有参数的路径。如下所示:

url.getFile()=/pub/files/foobar.txt?id=123456url.getPath()=/pub/files/foobar.txt

使用getFile()方式获取文件的代码如下:

/***直接通过文件名+getFile()来获取**@paramfileName*@throwsIOException*/publicvoidfunction3(StringfileName)throwsIOException{Stringpath=this.getClass().getClassLoader().getResource(fileName).getFile();//注意getResource("")里面是空字符串System.out.println(path);StringfilePath=URLDecoder.decode(path,"UTF-8");//如果路径中带有中文会被URLEncoder,因此这里需要解码System.out.println(filePath);getFileContent(filePath);}

方式四(重要)

直接使用getResourceAsStream方法获取流,上面的几种方式都需要获取文件路径,但是在SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此可以使用以下方式。

/***直接使用getResourceAsStream方法获取流*springboot项目中需要使用此种方法,因为jar包中没有一个实际的路径存放文件**@paramfileName*@throwsIOException*/publicvoidfunction4(StringfileName)throwsIOException{InputStreamin=this.getClass().getClassLoader().getResourceAsStream(fileName);getFileContent(in);}

方式五(重要)

主要也是使用getResourceAsStream方法获取流,不使用getClassLoader可以使用getResourceAsStream("/配置测试.txt")直接从resources根路径下获取,SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此可以使用以下方式。

/***直接使用getResourceAsStream方法获取流*如果不使用getClassLoader,可以使用getResourceAsStream("/配置测试.txt")直接从resources根路径下获取**@paramfileName*@throwsIOException*/publicvoidfunction5(StringfileName)throwsIOException{InputStreamin=this.getClass().getResourceAsStream("/"+fileName);getFileContent(in);}

方式六(重要)

通过ClassPathResource类获取文件流,SpringBoot中所有文件都在jar包中,没有一个实际的路径,因此可以使用以下方式。

/***通过ClassPathResource类获取,建议SpringBoot中使用*springboot项目中需要使用此种方法,因为jar包中没有一个实际的路径存放文件**@paramfileName*@throwsIOException*/publicvoidfunction6(StringfileName)throwsIOException{ClassPathResourceclassPathResource=newClassPathResource(fileName);InputStreaminputStream=classPathResource.getInputStream();getFileContent(inputStream);}

方式七

通过绝对路径获取项目中文件的位置,只是本地绝对路径,不能用于服务器获取。

/***通过绝对路径获取项目中文件的位置(不能用于服务器)*@paramfileName*@throwsIOException*/publicvoidfunction7(StringfileName)throwsIOException{StringrootPath=System.getProperty("user.dir");//E:\WorkSpace\Git\spring-framework-learning-exampleStringfilePath=rootPath+"\\chapter-2-springmvc-quickstart\\src\\main\\resources\\"+fileName;getFileContent(filePath);}

方式八

通过new File("")获取当前的绝对路径,只是本地绝对路径,不能用于服务器获取。

/***通过绝对路径获取项目中文件的位置(不能用于服务器)*@paramfileName*@throwsIOException*/publicvoidfunction8(StringfileName)throwsIOException{//参数为空Filedirectory=newFile("");//规范路径:getCanonicalPath()方法返回绝对路径,会把..\、.\这样的符号解析掉StringrootCanonicalPath=directory.getCanonicalPath();//绝对路径:getAbsolutePath()方法返回文件的绝对路径,如果构造的时候是全路径就直接返回全路径,如果构造时是相对路径,就返回当前目录的路径+构造File对象时的路径StringrootAbsolutePath=directory.getAbsolutePath();System.out.println(rootCanonicalPath);System.out.println(rootAbsolutePath);StringfilePath=rootCanonicalPath+"\\chapter-2-springmvc-quickstart\\src\\main\\resources\\"+fileName;getFileContent(filePath);}

方式九

主要是通过设置环境变量,将文件放在环境变量中,原理也是通过绝对路径获取。
示例中我设置了一个环境变量:TEST_ROOT=E:\\WorkSpace\\Git\\spring-framework-learning-example

System.getenv("TEST_ROOT");System.getProperty("TEST_ROOT")

通过设置环境变量的方式,然后通过绝对路径获取文件

/***通过绝对路径获取项目中文件的位置**@paramfileName*@throwsIOException*/publicvoidfunction9(StringfileName)throwsIOException{System.setProperty("TEST_ROOT","E:\\WorkSpace\\Git\\spring-framework-learning-example");//参数为空StringrootPath=System.getProperty("TEST_ROOT");System.out.println(rootPath);StringfilePath=rootPath+"\\chapter-2-springmvc-quickstart\\src\\main\\resources\\"+fileName;getFileContent(filePath);}

到此,相信大家对“Java怎么实现读取resources目录下的文件路径”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

发布于 2022-04-03 22:37:11
收藏
分享
海报
0 条评论
25
上一篇:Java继承与多态的概念是什么及怎么实现 下一篇:基于Python怎么实现丝滑换装视频剪辑
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码