返回顶部
首页 > 资讯 > 后端开发 > JAVA >springboot对本地文件进行操作
  • 447
分享到

springboot对本地文件进行操作

springbootjava 2023-09-23 13:09:44 447人浏览 八月长安
摘要

文章目录 方案一:使用ResourceUtils方案二:使用commons-io方案三:springboot获得本地磁盘文件路径方案四:通过ResourceLoader使用文件流的方式来读取J

文章目录

方案一:使用ResourceUtils

这种方案是一个坑,详细内容参考:springboot读写磁盘json格式文件
使用这种方案一般都会提示:java.io.FileNotFoundException

方案二:使用commons-io
<dependency>    <groupId>commons-iogroupId>    <artifactId>commons-ioartifactId>    <version>2.11.0version>dependency>
  • commons-io中提供了文件的常规读、写工具
  • 读写文件时需要传入文件所在磁盘路径
  • 参考如下代码
File file = new File("E:/data/a.csv");FileUtils.readFileToString(file, "UTF-8");
  • 上面方法存在一个问题,就是File的路径是写死的,这非常容易出错,如:计算机根本没有E盘,怎么整,你说怎么办?废了吧…
  • 方案三开始讨论SpringBoot怎样获得正确的文件路径
方案三:springboot获得本地磁盘文件路径
  • 其中ResourceUtils就是一种方式,慎用,调试模式没问题,工程发布后的生产环境你试试,谁试谁知道

解决方式一
使用如下代码获得工程发布后的jar包所在的路径,这种方式非常好用,测试环境和生产环境都正确

private String getJarFilePath() {    ApplicationHome home = new ApplicationHome(getClass());    File jarFile = home.getSource();    return jarFile.getParentFile().toString();}

解决方式二
这种方式会存在问题,调试环境可以得到工程所在的磁盘路径,但是当使用java -jar E:\project.1.0.0.Jar命令运行Jar包时不会得到正确的Jar包所在路径,会得到运行java命令时的路径

System.getProperty("user.dir")

解决方式三
获得classes目录绝对路径

String path = ResourceUtils.getURL("classpath:xxx").getPath();String path = ClassUtils.getDefaultClassLoader().getResource("xxx").getPath();

使用上面的方式,如果工程路径中存在中文,文件路径会有乱码,如下:
E:/%e5%ae%89%e6%a3%80%e8%81%94%e7%bd%91%e5%8d%87%e7%ba%a7%e6%94%b9%e9%80%a0/usb-key/target/classes/sysconfig.JSON

何为classpath

  • Maven项目中,所有的resources文件都将被复制到classes目录下。classpath在Tomcat项目中就是/classes,/lib和tomcat下的其他路径。
  • 对于开发者来说,一般就是classes所在目录就是classpath路径的起点和base path。

解决方式四
使用下面常规的方式,当打成Jar包后会出问题

File file = new File("src/main/resources/static/assets/test.txt");InputStream inputStream=new FileInputStream(file);
方案四:通过ResourceLoader使用文件流的方式来读取Jar包中的资源

ResourceLoader读取的文件是流,于是进一步将流转换为文件方便操作

   ResourceLoader resourceLoader = new DefaultResourceLoader();   InputStream inputStream = resourceLoader.getResource("static/img/loGo.png").getInputStream();   //通过将文件转换为临时文件进行操作   File file = File.createTempFile("logo", ".png");   try {        FileUtils.copyInputStreamToFile(inputStream, file);   } finally {   //关闭IO        IOUtils.closeQuietly(inputStream);   }
总结

如果想读取Jar包中的资源文件必须要采用文件流的方式

ClassPathResource classPathResource = new ClassPathResource("static/assets/test.txt");InputStream inputStream = classPathResource.getInputStream();

也可以参考文章:Java getResourceAsStream()获得Jar包中资源文件
小编没有写具体的实现,需要靠你自己完成,嘻嘻

大总结

如果不是特别的情况下,希望大家还是采用方案二结合方案三的解决方式一处理读写文件的问题(将一些文件放到和Jar同级的磁盘文件目录),不要轻易的操作Jar包了,毕竟人家Jar包已经打包好了。

来源地址:https://blog.csdn.net/baidu_38493460/article/details/128660849

--结束END--

本文标题: springboot对本地文件进行操作

本文链接: https://lsjlt.com/news/416489.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot对本地文件进行操作
    文章目录 方案一:使用ResourceUtils方案二:使用commons-io方案三:springboot获得本地磁盘文件路径方案四:通过ResourceLoader使用文件流的方式来读取J...
    99+
    2023-09-23
    spring boot java
  • JavaScript如何增加本地操作API进行直接操作本地文件
    JavaScript如何增加本地操作API进行直接操作本地文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Chrome、IE和Firef...
    99+
    2024-04-02
  • Java如何对文件进行基本操作
    这篇文章给大家分享的是有关Java如何对文件进行基本操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。File文件类java.io.File是文件和目录的重要类(JDK6及以前是唯一)目录也使用File类进行表示...
    99+
    2023-06-20
  • C#中怎么对文本文件进行添加文本操作
    本篇文章给大家分享的是有关C#中怎么对文本文件进行添加文本操作,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。using System;  &nbs...
    99+
    2023-06-17
  • Java对文件进行基本操作案例讲解
    File文件类 java.io.File是文件和目录的重要类(JDK6及以前是唯一) 目录也使用File类进行表示 File类与操作系统无关,但会受到操作系...
    99+
    2024-04-02
  • python对文件进行读写操作
    先看原理,再动手写程序: python进行文件读写的函数是open或file file_handler = open(filename,,mode) Table mode 模式 描述 r 以读方式打开文件,可读...
    99+
    2023-01-31
    操作 文件 python
  • SpringBoot 添加本地 jar 文件的操作步骤
    前言 有时候我们在项目中,会用到一些本地 jar 包文件,比如隔壁公司自己打包的; 此时无法从maven远程仓库拉取; 那么我们可以考虑把 jar 文件安装到本地 maven 库中,...
    99+
    2024-04-02
  • node.js中怎么对文件进行操作
    这篇文章将为大家详细讲解有关node.js中怎么对文件进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、文件操作在文件操作里,主要是有文件读写,创建...
    99+
    2024-04-02
  • VBScript 中怎么对文件进行操作
    这期内容当中小编将会给大家带来有关VBScript 中怎么对文件进行操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。创建文本文件 复制代码 代码如下:Set objFSO = CreateObject(...
    99+
    2023-06-08
  • Python中怎么对文件进行操作
    Python中怎么对文件进行操作,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。编码方式编码方式的历史大致为ASCII ->gb2312->unicode->u...
    99+
    2023-06-16
  • python中如何对文件进行操作
    这篇文章主要介绍python中如何对文件进行操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.文件基本操作1.1 文件打开和关闭open(‘文件名称','打开模式')模式:r(只读,指针再...
    99+
    2023-06-15
  • 如何在Python中对文件进行操作
    目录前言1.open()函数2.读文件3.写文件4.通过 with 来读写文件前言 在Python中,我们可以通过一些内置函数来操作电脑上的文件,并对文件进行读写,这种读写操作是很常...
    99+
    2024-04-02
  • 使用Python怎么对文件进行操作
    使用Python怎么对文件进行操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。文件的存储方式在计算机中,文件是以 二进制的方式保存在磁盘上的文本文件和二进制文...
    99+
    2023-06-15
  • Java 7中怎么对文件进行操作
    这篇文章将为大家详细讲解有关Java 7中怎么对文件进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建和删除文件下面的代码片段向你展示的是用 Files.createFile(Pat...
    99+
    2023-06-17
  • VB.NET中怎么对二进制文件进行操作
    今天就跟大家聊聊有关VB.NET中怎么对二进制文件进行操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。VB.NET二进制文件操作主要应用的方法和函数有:Open,Close,Get...
    99+
    2023-06-17
  • nodejs中怎么对json文件进行读写操作
    nodejs中怎么对json文件进行读写操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。nodejs 读json文件var&...
    99+
    2024-04-02
  • Python中怎么对docx文件进行读写操作
    这期内容当中小编将会给大家带来有关Python中怎么对docx文件进行读写操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。演示文本为了方便理解,我们以 python-docx.docx 文件为例,演示如...
    99+
    2023-06-16
  • C#中怎么利用FileStream对文件进行操作
    C#中怎么利用FileStream对文件进行操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C# FileStream写文件的操作实例:///先导入命名空间:...
    99+
    2023-06-17
  • C#中怎么对ini文件进行读写操作
    本篇文章为大家展示了C#中怎么对ini文件进行读写操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#读写ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每...
    99+
    2023-06-18
  • C语言怎么实现对文件进行操作
    这篇“C语言怎么实现对文件进行操作”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言怎么实现对文件进行操作”文章吧。文件指...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作