Java代码读取文件缓存问题解决
一、业务场景
最近遇到了一个Java文件读取的缓存问题,打远程断点出现的也是原来的老代码参数,好在晚上十点突然找到了解决方案,豁然开朗,现整理分享思路,希望对遇到同样文件读取缓存问题的你有帮助
我更新几次插件包后,服务器也缓存也清理了
我本地用postman调用测试,下载的文件是新文件,但是上线后发现下载下来的文件是老文件
下载下来的文件还是原来的文件,文件大小28.5K,我动态写入部分数据,按道理下载下来的文件大小应该比这个大
业务场景: 我现在需要获取一个Java项目resource目录下的Excel文件,然后往此Excel文件的第二个sheet页动态插入部分数据
实践情况:我在如何获取此文件的相对路径情况下花费了很多的时间,原来定义了一个参数String path和String realpath打完包验证发现线下是好的,服务器不行,我将对应代码移除
更新后的方法:我使用新的方法动态获取当前文件,将此文件转换为流传入对应的对象;
问题: 本地测试可以动态的导出Excel文件,但是代码上线,下载下来的模板是老项目,远程断点出现原来老的定义的参数
来看看我远程断点的相关情况
我是读取一个文件转行成文件流然后放入指定的Workbook中(即读取一个已有Excel文件)
在这个读取的过程中我发现了如下这些属性:path,upload
还有realpath以及返回为空的wb
这些属性我是我上午测试的时候定义的,但是此时已经不使用拼接路径的方式去构建workbook文件了,是将流放入workbook对象中构建文件
原来的解决思路: 我本地没问题,我就觉得是缓存的原因:
1、清理卸载插件重新安装
2、清理浏览器缓存,清理Tomcat缓存,重启Tomcat
3、都试过后还不行就重启reboot服务器
但是不管我怎么操作,服务器依然走老代码,下载下来老的模板
二、解决方案
如何解决问题?
自己创建一个新的文件夹,将自己的文件xlsx文件放入其中,读取文件路径的地方更新成读取新的文件路径
如原来是
InputStream inputstream = this.getClass().getClassLoader().getResourceAsStream("hello/Test.xlsx");
现在创建一个新的文件夹,放入原文件如 word/Test.xlsx ,然后读取新的路径
InputStream inputstream = this.getClass().getClassLoader().getResourceAsStream("word/Test.xlsx");
打包再上线测试
反思:具体问题原因肯定是打包的时候文件被缓存到哪里了,没清理干净,更新一下新路径,走新的读取方式问题就解决了
总结:创建新的路径,走新的读取方式
三、文件读取
项目之前是静态下载模板的即前端静态的下载
window.location.href = url
此业务是先读取,再下载,如何读取自己Java项目中对应相对位置的文件呢 ?
InputStream inputstream = this.getClass().getClassLoader().getResourceAsStream("hello/Test.xlsx");
来我们验证一下我们是否读取了
如果换一个不存在的路径或者文件名,效果如下
如上即我们成功读取到了此文件
自测代码如下
public class TestPath { InputStream getFileStream(){ InputStream inputstream = this.getClass().getClassLoader().getResourceAsStream("helloWord/Test.xlsx"); return inputstream; } public static void main(String[] args) { TestPath stream = new TestPath(); System.out.println( stream.getFileStream()); } }
接下来也会整理一下Java读取文件以及导入导出Excel表格相关问题,欢迎同步沟通学习交流!
到此这篇关于Java代码读取文件缓存问题解决的文章就介绍到这了,更多相关Java 读取文件缓存内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
相关文章
- 这篇文章主要介绍了如何利用java语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
- 这篇文章主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下...2020-11-03
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 本文主要介绍了python读取和保存mat文件的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-08-25