如何为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() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |