注意事项: 普通情况下只会打包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:
// 获取项目根文件夹路径
val ROOT_PATH= System.getProperty("user.dir")
// 配置文件路径 File.separator 根据代码运行环境自适应 / 还是 \
val setting_file = s"${ROOT_PATH}${File.separator}datas${File.separator}aa.json"
- 方法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"
}
- 方法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"