浅谈web项目读取classpath路径下面的文件

 更新时间:2018年01月11日 08:54:53   作者:Mr_伍先生  
这篇文章主要介绍了浅谈web项目读取classpath路径下面的文件,具有一定借鉴价值,需要的朋友可以参考下

本文主要研究的是web项目下读取classpath路径下的文件的问题,具体如下。

首先分两大类按web容器分类

一种是普通的web项目,像用Tomcat容器,特点是压缩包随着容器的启动会解压缩成一个文件夹,项目访问的时候,实际是去访问文件夹,而不是jar或者war包。

这种的无论你是用获取路径的方法this.getClass().getResource("/")+fileName

获取流的方法this.getClass().getResourceAsStream(failName);

import org.springframework.util.ResourceUtils;
File file= ResourceUtils.getFile("classpath:test.txt");

或者

ClassPathResource classPathResource = new ClassPathResource("test.txt");

获取文件:classPathResource .getFile();

获取文件流:classPathResource .getInputStream();

第二种是内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩,项目实际访问时jar包或者war包

这种最容易遇坑,最大的坑就是,用第一种方式读取,在eclipse,本地调试,完美运行,到linux环境下,就不行.

首先用获取路径的方法this.getClass().getResource("/")+fileName,获取流的方法this.getClass().getResourceAsStream(failName);

在本地运行时,绝壁能找到,你打印出来路径,没错,是咱们eclipse的工作目录,项目目录,但是在target目录下。

现在给你分析为什么去到线上,就GG了,很简单,线上内嵌的工程,我们只会放一个jar文件上去,我理解是jar里面的路径是获取不到的,jar是封闭性东西吧,不像文件夹,总不能c:/home/xx.jar/file.txt

读取jar里面的文件,我们只能用流去读取,不能用file,文件肯定要牵扯路径,jar那个路径刚刚我已经拼出来了

jar里面文件读取方式:

ClassPathResource classPathResource = new ClassPathResource("test.txt");

获取文件流:classPathResource .getInputStream();

总结

以上就是本文关于浅谈web项目读取classpath路径下面的文件的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • SpringBoot整合BCrypt实现密码加密

    SpringBoot整合BCrypt实现密码加密

    这篇文章主要为大家详细介绍了SpringBoot整合BCrypt进行密码加密,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • IDEA加载项目没有src目录的问题及解决

    IDEA加载项目没有src目录的问题及解决

    这篇文章主要介绍了IDEA加载项目没有src目录的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • java8 Stream API之reduce使用说明

    java8 Stream API之reduce使用说明

    这篇文章主要介绍了java8 Stream API之reduce使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Java中使用WebSocket的几种方式

    Java中使用WebSocket的几种方式

    本文主要介绍了Java中使用WebSocket的几种方式
    2024-06-06
  • 浅谈Spring中几个PostProcessor的区别与联系

    浅谈Spring中几个PostProcessor的区别与联系

    这篇文章主要介绍了浅谈Spring中几个PostProcessor的区别与联系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • springboot集成gzip和zip数据压缩传输(适用大数据信息传输)

    springboot集成gzip和zip数据压缩传输(适用大数据信息传输)

     在大数据量的传输中,压缩数据后进行传输可以一定程度的解决速度问题,本文主要介绍了springboot集成gzip和zip数据压缩传输,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • java通过复选框控件数组实现添加多个复选框控件示例分享

    java通过复选框控件数组实现添加多个复选框控件示例分享

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节
    2014-02-02
  • Java实现邮件发送QQ邮箱带附件

    Java实现邮件发送QQ邮箱带附件

    这篇文章主要为大家详细介绍了Java实现邮件发送QQ邮箱带附件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Java实现向数组里添加元素

    Java实现向数组里添加元素

    这篇文章主要介绍了Java实现向数组里添加元素方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java中的移位运算符使用及原理详解

    Java中的移位运算符使用及原理详解

    在 Java 中,移位运算符用于对二进制数进行位移操作,它们可以将一个数的所有位向左或向右移动指定的位数,本文小编将给大家详细的介绍一下Java移位运算符,需要的朋友可以参考下
    2023-09-09

最新评论