iT邦幫忙

DAY 6
0

Ruby on Rails 30天學習筆記系列 第 6

Ruby on Rails 30天學習筆記之6-Files

大家好,我是小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


上一篇
Ruby on Rails 30天學習筆記之5-gets、Prompting、Argument
下一篇
Ruby on Rails 30天學習筆記之7-Functions
系列文
Ruby on Rails 30天學習筆記8

1 則留言

0
Ruei
iT邦研究生 1 級 ‧ 2016-05-18 14:50:03

close 那部分豁然開朗,一直沒概念這東西是來存檔還是來幹嘛的,特別挖出來操作又不是這樣

看 lrthw 的習題有改寫成一行的,部知道是要功能辦到就好了還是如何,不過就算功能辦到還是有個 AGRV 和 script = $0 這兩段吧

另外 script = $0 寫了好幾題都不太清楚這個的存在意義是甚麼,把它 comm 起來好像也沒有甚麼改變

我要留言

立即登入留言