Ruby 入門指南 - 存檔與載入





































Ruby 入門指南 - 存檔與載入






簡單點,我們存檔時儲存密碼表就可以了




完整程式請參考

  • encrypt.rb

  • encryptgui.rb

  • guidemo.rb





也就是說, Encrypt 的 getCode 方法 (method) 會取得密碼表的字串 (string) ,然後把這個字串儲存到一個固定檔名的純文字檔裡,就完成存檔的工作了。載入就讀取這個純文字檔,取得密碼表字串再用 Encrypt 的 setCode 方法重新設定密碼表即可。


整個概念很簡單,可時存檔時也是可能出現 @enil 的情況,因此這邊也要先進行條件檢查。


儲存 Encrypt 物件為 Save 按鈕,對應到 saveMethod 方法,程式如下
# 儲存密碼表
def saveMethod
if @e == nil
@displayText.text = "No Encrypt object can save!!"
else
_file = File.new("./code.txt", "w")
_file.syswrite(@e.getCode)
@displayText.text = "The code is saved."
end
end



這裡利用 File 類別建立檔案,需要兩個參數 (parameter) ,第一個參數為檔案路徑名稱,第二個參數則是檔案處理模式,這裡 "w" 表示寫入,若 code.txt 不存在就會建立檔案
_file = File.new("./code.txt", "w")



寫入內容到檔案則是利用 syswrite 方法,參數就是要寫入的內容
_file.syswrite(@e.getCode)



存檔工作結束,訊息欄顯示 "The code is saved." 。


載入則是讀取 code.txt 中的內容,因為檔案內容就是密碼表。不過載入時有可能檔案不存在的情況,這是因為沒有 Save 過,所以相同目錄下不存在 code.txt 檔案,所以這邊也是先做個檔案是否存在的條件檢查,程式如下
# 載入儲存的密碼表
def loadMethod
if File.exist?("./code.txt")
_arr = IO.readlines("./code.txt")
@e = Encrypt.new
@e.setCode(_arr[0])
@displayText.text = "load: #{@e.getCode}"
else
@displayText.text = "Load denied!!"
end
end



File 類別 (class) 的 exist?() 方法用為判斷檔案是否存在
if File.exist?("./code.txt")



若不存在訊息欄就顯示 "Load denied!!" ,若存在就進行載入工作,這裡是用 IO 類別的 readlines 方法
_arr = IO.readlines("./code.txt")



_arr 會得到逐行的字串陣列 (array) ,也就是一行文字是陣列中的一個元素。由於全部只有一行,因此直接將 _arr 索引值為 0 的元素設定給 @e 即可,這裡同樣 @e 要先建立一個新的 Encrypt 物件
@e = Encrypt.new
@e.setCode(_arr[0])



這是因為 @enil 的話,相對就沒有 setCode 可用了。


來執行看看囉!下面是存檔



下面是載入



好了,我們接下來繼續完成 ClearCopy 兩個按鈕,使之成為完成版的 EncryptGUI 囉!


























中英文術語對照
方法method
字串string
參數parameter
類別class
陣列array



您可以繼續參考
GUI 篇

  • GUI 的基本概念

  • 加入 command

  • 整合 Encrypt 類別

  • GUI 中的編碼與解碼

  • 存檔與載入

  • 完成版的 EncryptGUI

  • 下一步





相關目錄

回 Ruby 入門指南
回 Ruby 教材
回首頁



參考資料

http://www.ruby-doc.org/docs/ProgrammingRuby/html/ext_tk.html
http://www.tutorialspoint.com/ruby/ruby_tk_guide.htm







沒有留言:




















window.___gcfg = { 'lang': 'zh-TW' };





Popular posts from this blog

VPN Gate Client 4.27.9668 (201805030) 簡體中文版 - 不限流量免費VPN軟體 手機可用公共VPN中繼伺服器

Tình cờ gặp nhau 3 lần trên một chuyến xe, tài xế bus kết hôn với nữ hành khách vì "có duyên phận"

"Thiên thần lai" MOMOLAND khiến fan phát sốt vì màu tóc mới quá nổi trong ảnh nhá hàng