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中繼伺服器

JavaScript 入門指南 - 完成版的 Encode Software

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"