【转】SpringBoot——web项目下读取classpath下的文件心得
在读取springBoot+gradle构建的项目时,如果使用传统的FileInputStream读取文件流或者ResourceUtils工具类的方式,都会失败,下面解释原因:
一、读取文件的三种方式:
1. ResourceUtils工具类
import org.springframework.util.ResourceUtils;
//使用:
File file= ResourceUtils.getFile("classpath:test.txt");
2. FileInputStream文件流的方式读取

(该方式为按行读取,若不是按行处理,需要像图中将每行数据存在一个buffer中,然后转成String处理)
3. ClassPathResource获取文件流的方式
ClassPathResource classPathResource = new ClassPathResource("test.txt");
获取文件:classPathResource .getFile();
获取文件流:classPathResource .getInputStream();
二、不同web容器读取文件的区别
有两种常见的web容器:
第一种是普通的web项目,特点是jar/war压缩包会随着容器的启动解压缩成一个文件夹,当项目访问的时候,实际是访问文件夹,而非jar或者war包。该种方式下,用获取路径的方法:this.getClass().getResource("/")+fileName或者获取流的方法:this.getClass().getResourceAsStream(failName);都可以成功。
第二种是内嵌web容器,Spring boot就是内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩,项目实际访问的就是jar/war包该种方式最容易遇坑!!最大的坑就是,this.getClass().getResource("/")+fileName在本地windows下能完美找到路径,可是在linux测试服务器下就失败,所以读取jar中的文件只能用流读取,不能用file,即只能用方式三读取。所以,用spring boot搭建的工程,只能用
classPathResource .getInputStream();获取文件流。
转自:https://blog.csdn.net/NNnora/article/details/80734326
【转】SpringBoot——web项目下读取classpath下的文件心得的更多相关文章
- 读取ClassPath下resource文件的正确姿势
1.前言 为什么要写这篇文章?身为Java程序员你有没有过每次需要读取 ClassPath 下的资源文件的时候,都要去百度一下,然后看到下面的这种答案: Thread.currentThread(). ...
- Maven Web项目部署到Tomcat下问题
但是也遇到了很多问题,下面记录一下Web项目部署到Tomcat下的问题 1.普通的WEB项目,就是虽然是用maven搭建的,但是没有使用profiles.xml文件来配置参数.这样的项目可以通过以下的 ...
- springboot打成jar后获取classpath下文件失败
原文链接:https://blog.csdn.net/qq_18748427/article/details/78606432 springboot打成jar后获取classpath下文件失败 使用如 ...
- springboot web项目创建及自动配置分析(thymeleaf+flyway)
@ 目录 源码分析 webjars thymeleaf thymeleaf语法 springmvc 启动配置原理 集成flyway插件 springboot 创建web项目只需要引入对应的web-st ...
- 如何在spring-boot web项目中启用swagger
swagger的三个项目及其作用 我们打开swagger的官网,会发现有三个swagger相关的项目,它们分别是 swagger-editor 作用是通过写代码,生成文档描述(一个json文件或其他格 ...
- SpringBoot Web项目中中如何使用Junit
Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 凭本人的感觉和经验来说,在项目中完全按标准都写Junit用例覆盖大部分业务代码的,应该不会超过一半. ...
- Java读取classpath下的文件
写Java程序时会经常从classpath下读取文件,是时候该整理一下了,并在不断深入的过程中,陆续补充上. 现在Java project 都以maven项目居多, 比如像下面这样的一个项目结构: 编 ...
- 【转】MyEclipse开发Web项目发布到Tomcat下的Root目录
通常情况下,Web项目是发布到Tomcat下的webapps文件目录下的 .以至于我们访问的时候: 例如:Web应用项目名称为:webManager,则部署到tomcat后,是部署在tomcat/we ...
- Eclipse下编写的web项目部署到tomcat下
之前都是用myeclipse编写web项目,编写好然后在myclipse上配置的tomcat下的webapps文件想项目复制到其他tomcat下就能运行了. 最近学习jquery,将eclipse编写 ...
随机推荐
- Docker Kubernetes hostPort 代理转发
Docker Kubernetes hostPort 代理转发 hostPort: 1. 类似docker -p 映射宿主级端口到容器. 2. 容器所在的主机暴露端口转发到指定容器中. 3. hos ...
- HTTP长连接、短连接究竟是什么?
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议. IP协议主要解决网络路由和寻址 ...
- freeswitch设置支持视频语音编码
1.修改FreeSWITCH安装路径下/conf/var.xml文件中,增加: <X-PRE-PROCESS cmd=="set" data="proxy_medi ...
- android外包公司—技术分享:Android开发环境搭建(长年承接安卓应用外包)
Android开发环境搭建 1.安装JDK 1.1.由于Android是基于java语言的.所以在开发过程中,首先要做的事儿就是安装JDK. 1.2.JDK的安装步骤: 设置环境变量:我的电脑---- ...
- js 数组元素排序
字母排序 <html> <body> <script type="text/javascript"> ) arr[] = "Georg ...
- zookeeper及kafka集群搭建
zookeeper及kafka集群搭建 1.有关zookeeper的介绍可参考:http://www.cnblogs.com/wuxl360/p/5817471.html 2.zookeeper安装 ...
- Font Awesome字体图标的 用法, 很简单
http://fontawesome.dashgame.com/ 上面是 官网, 可下载,也可以CDN. 1... 加载 2... 用法
- Django 修改视图文件(views.py)并加载Django模块 + 利用render_to_response()简化加载模块 +locals()
修改视图代码,让它使用 Django 模板加载功能而不是对模板路径硬编码.返回 current_datetime 视图,进行如下修改: from django.template.loader impo ...
- B站(Bilibili) 视频的下载。
1) 第一种是众所周知的方法,在URL的 bilibili 前加个 i, 就可以有视频的mp4的地址,然后用下载器下载. 比如 想 下载 https://www.bilibili.com/video/ ...
- phpldapadmin操作指导
1.在浏览器中打开http://IP/phpldapadmin 2. 点击[Login]按钮,输入管理员密码. 3.点击[创建新条目]. 4. 点击[Generic: Postfix Group]. ...