相信大部分的桌面軟體都是存在一個設定的介面,允許使用者進行設定的修改,此修改之後需要儲存的本地,若是讓開發者自己實現,還是有些繁瑣
這裡介紹下TornadoFx中提供的一個config物件,可以快速實現設定頁面相關資料的儲存
官方檔案中(連結在下文的參考有羅列),提及了兩個物件config
和preferences
,下面分別對這兩個物件進行講解
官方說明config一般作用於儲存元件(Control)的狀態
用法其實很簡單,在View或Application中即可使用,如下程式碼
//儲存數值
config["mykey"] = "資料"
config.save()
config本身其實就是一個Java中的Properties物件,以鍵值對的方式儲存資料
所以,我們知道了用法,不難猜到其獲取數值的方法
//從儲存的本地檔案中取出key為mykey的資料,若沒有,則返回預設數值
val result = config.string("mykey","預設數值")
當然,上面舉例用的只是string方法,除此之外,相關型別的方法也是都有支援,如boolean()
,int()
等
注意: 存資料和讀資料需要在同個檔案裡,否則讀取會失敗(原因也好理解,因為config是固定了某個路徑)
上面只是講了用法,有的同學可能會好奇,之後檔案是儲存在哪裡了呢?
如果你是直接用IDEA跑起來的話,在你專案目錄下會有個conf資料夾,其中properties
檔名會以包名
+View檔名
,如下圖所示
如果想要修改檔案路徑,根據你用的範圍不同,有幾種不同的方法(主要就是重寫引數)
View:
class MyView : View() {
override val configPath = Paths.get("some/other/path/myview.properties")
}
class MyView : View() {
override val configPath = Paths.get("some/other/path/myview.properties")
App:
class MyApp : App(WelcomeView::class) {
override val configBasePath = Paths.get("/etc/myapp/conf")
}
perferences和config有些區別,這個是系統層面的,在window中使用的話,會在登入檔中新建一個新的資料,如下面的程式碼
button{
action{
preferences {
putBoolean("mykey",true)
}
}
}
之後可以在HKEY_CURRENT_USER/Software/JavaSoft/....
目錄找到我們設定的選項數值
這裡由於我們是預設,所以,選專案錄名就是為TornadoFx
如果你想改的話,也很簡單,preferences方法中傳遞數值
preferences("application") {
putBoolean("boolean", true)
putString("String", "a string")
}