加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何为Scala应用程序提供基本配置?

发布时间:2020-12-16 08:59:55 所属栏目:安全 来源:网络整理
导读:我正在研究用 Scala编写的小型GUI应用程序.用户将在GUI中设置一些设置,我希望它们在程序执行之间保持不变.基本上我想要一个scala.collections.mutable.Map,它会在修改后自动保存到文件中. 这似乎是一个常见的问题,但我一直无法找到轻量级的解决方案.这个问题
我正在研究用 Scala编写的小型GUI应用程序.用户将在GUI中设置一些设置,我希望它们在程序执行之间保持不变.基本上我想要一个scala.collections.mutable.Map,它会在修改后自动保存到文件中.

这似乎是一个常见的问题,但我一直无法找到轻量级的解决方案.这个问题通常如何解决?

解决方法

我做了很多这个,我使用.properties文件(它在 Java-land中是惯用的).不过,我的配置非常直观.如果您有嵌套的配置构造,您可能需要不同的格式,如YAML(如果人类是主要作者)或 JSON或XML(如果机器是作者).

下面是一些加载道具的示例代码,操作Scala Map,然后再次保存为.properties:

import java.io._
import java.util._
import scala.collection.JavaConverters._

val f = new File("test.properties")
// test.properties:
//   foo=bar
//   baz=123

val props = new Properties

// Note: in real code make sure all these streams are 
// closed carefully in try/finally
val fis = new InputStreamReader(new FileInputStream(f),"UTF-8")
props.load(fis)
fis.close()

println(props) // {baz=123,foo=bar}

val map = props.asScala // Get to Scala Map via JavaConverters
map("foo") = "42"
map("quux") = "newvalue"

println(map)   // Map(baz -> 123,quux -> newvalue,foo -> 42)
println(props) // {baz=123,quux=newvalue,foo=42}

val fos = new OutputStreamWriter(new FileOutputStream(f),"UTF-8")
props.store(fos,"")
fos.close()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读