项目中使用临时文件夹或获取文件资源路径

 背景

想要在resouces下创建一个临时文件夹,并将临时文件写到这个文件夹中

关于项目中使用临时文件夹的情况

1. 如果想要获取resource目录下的某个文件夹路径:
    ResourceUtils.getURL("classpath:").getPath() + "/xxx"
    注意:
        1.1 不能直接使用ResourceUtils.getURL("classpath:xxx").getPath(),这种会报错,因为文件夹严格来说并不是一个资源,只有文件才算是资源
        1.2 如果resource目录下的那个文件夹是一个空文件夹,那么上linux后,无法在其中创建文件,因为打包的时候会忽略空文件夹,即target下不会有对应的文件夹,此时如果想在代码中实时创建这个文件夹又会没有权限
解决方式:在那个临时文件夹下再放个临时文件,这样打包的时候也会自动创建临时文件夹

如果想要获取resource目录下的某个文件

ResourceUtils.getURL("classpath:xxx.txt").getPath()

解决方法:

不在resources下创建临时文件夹了,直接写到系统的临时文件夹下

注意:

hutool的FileUtil.getTmpDir()方法,在linux上获取的临时文件夹路径不正确,谨慎使用

获取临时文件夹时最好判断一下:用的都是hutool工具
 

/**
     * 由于linux上获取临时文件夹时有时会失败,所以手动匹配一下
     * @return
     */
    public File getTempPath () {
        File tmpFile;
        try {
            OsInfo osInfo = SystemUtil.getOsInfo();
            if (osInfo.isLinux()) {
                tmpFile = FileUtil.newFile("/tmp");
                if (!tmpFile.exists()) {
                    log.error("linux下无/tmp临时文件夹");
                    return null;
                }
            } else {
                tmpFile = FileUtil.getTmpDir();
            }
            log.info("临时文件夹路径: [{}]", tmpFile.getAbsolutePath());
            return tmpFile;
        } catch (Exception e) {
            log.error("创建crm临时文件夹失败", e);
            return null;
        }
    }

关于resource下文件夹或文件的复制,读取文件,可看另外一篇博客:

对接海康sdk-linux下复制jar包中resource目录的文件夹-CSDN博客

对于resource下的文件读取,最好使用ResourceUtil.getStream(),即直接读取流,否则jar包运行时会报错。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巴中第一皇子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值