scala 自动适配Linux与Windows文件路径方法

注意事项: 普通情况下只会打包src/main/resources下面的资源文件 所以 在其他位置得文件 需要在打包时自行引入
需要导入的包:

import java.io.File
import cn.hutool.core.io.resource.ResourceUtil
import cn.hutool.core.util.ReUtil
import cn.hutool.json.{JSONObject, JSONUtil}
import scala.io.Source

需要引入的依赖

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.5.8</version>
        </dependency>
  1. 方法1:
    在这里插入图片描述
// 获取项目根文件夹路径
    val ROOT_PATH= System.getProperty("user.dir")
    // 配置文件路径   File.separator 根据代码运行环境自适应 /  还是 \
    val setting_file = s"${ROOT_PATH}${File.separator}datas${File.separator}aa.json"
  1. 方法2:
// 需要获得文件的路径
    var realPath:String = ""
    // 获取文件运行的系统环境
    var  os:String = System.getProperty("os.name")

    if(os.toLowerCase().startsWith("win")){ // 当在windows环境下时
      realPath = System.getProperty("user.dir") + "\\datas\\aa.json"
    }else{
      realPath = System.getProperty("user.dir") + "/datas/aa.json"
    }

在这里插入图片描述

  1. 方法3 获取Resource 包下数据
 // 获取 resources 文件夹下 aa.json 文件的路径   
    val MOON_HOME = ReUtil.get("(.*?(json))",ResourceUtil.getResource("setting/aa.json").getPath, 1)
    // 用来保存获取到的json
    var job: JSONObject = null
    if (!System.getProperty("os.name").toLowerCase().startsWith("win")) { // 判断是否是linux 环境
      // linux 环境下运行后 路径前为 file:/.... 所以需要再次正则匹配
      job = JSONUtil.parseObj(Source.fromFile(ReUtil.get("file:(.*)", MOON_HOME, 1)).mkString)

    } else {
      // windows 环境下 获取json 数据
      job = JSONUtil.parseObj(Source.fromFile(MOON_HOME).mkString)
    }

注意resource 文件夹下要获取别的文件时 可以采用如下方式进行拼接
val file = s"gg${File.separator}setting${File.separator}bb.json"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值