大家好,我是小K。今天的進度是以下3個習題:
Exercise 15: Reading Files
Exercise 16: Reading And Writing Files
Exercise 17: More Files
Exercise15,主要是介紹如何開啟檔案。
我真的覺得Ruby是一個非常直觀的語言。光是看他的英文也可以猜到這行Code大概在做什麼事。
比如開啟檔案,Ruby怎麼寫?
open(file)
讀取檔案咧?
file.read
你看,真的是超直觀的。
Exercose15,還有提到一點,儘量不要Hard Coding。
Hard Coding意思是,將檔案或其他資料寫死在程式裏面。Hard Coding測試用可以,但是如果是正式上線的程式,Hard Coding is not a good way。因為如果使用者要更改其他檔案,會造成一些麻煩。所以應該要讓使用者輸入,他要改哪些檔案,彈性點比較好。
以下是範例練習程式碼
在習題中的最後一題,還有提到檔案關閉的指令。(待會Exercise16也會提到)
file.close
在Exercise17的最後,我會稍微解釋它的重要性。
Exercise16,介紹了一下基本的檔案操作。包括:關閉、讀取、寫入和清空檔案。
1.關閉檔案
file.close
2.讀取檔案
file.read
3.讀取檔案其中一行
file.readline
4.寫入檔案
file.write
5.清空檔案
file.truncate
以下是範例練習程式碼
ex16.rb 所寫入的文字檔和終端機執行結果。
Exercise17,這一章主要是練習前兩章的東西,實現複製文件的功能。而且在裡面還有提到一個新的指令:
檔案是否存在
File.esixt
這個指令索回傳的是布林值,主要檢查檔案是否存在。
範例練習程式碼
ex17.rb 終端機執行結果。(文字檔就不再另外截圖囉)
在終端機執行結果當中,還有看到另外兩個指令:echo、cat
echo在PHP裡面,主要是用於輸出,也就是prnit的用途;在git的世界哩,則是用於新增內容到新的檔案裏面去。而在這邊的用法是屬於後者。
cat的話,學過Linux的人大概都很熟悉,主要就是用於輸出/讀取文件內容。
在終端機第7行,Does the output file exist?,回傳false。就可以知道,在執行copy之前,檔案是不存在的。
cpoy完之後,輸入cat new_file.txt,就發現「咦?複製成功了。」
17.5 為什麼需要output.close?
剛剛在上面有提到檔案關閉的重要性,其實不只是Ruby,其他的程式語言Java、Python等(或者是說全部)語言,都非常強調close。為甚麼呢?
用簡單的例子來解釋,架設今天開了水龍頭洗手,離開前沒有把它關掉的話,會發生甚麼事?-浪費水資源。對了!就是浪費資源!
今天你打開了一個檔案編輯,結果卻沒有把他關閉的話,他就會一直處於開啟狀態,占用硬體資源,buffer(暫存區)也不會清空,就好比如打開水龍頭沒有把他關閉,浪費水資源是一樣的道理。
所以,養成一個好習慣:打開了,就要記得關閉。
那今天就先到這邊~明天在見囉~
By 小K
close 那部分豁然開朗,一直沒概念這東西是來存檔還是來幹嘛的,特別挖出來操作又不是這樣
看 lrthw 的習題有改寫成一行的,部知道是要功能辦到就好了還是如何,不過就算功能辦到還是有個 AGRV 和 script = $0 這兩段吧
另外 script = $0 寫了好幾題都不太清楚這個的存在意義是甚麼,把它 comm 起來好像也沒有甚麼改變