2011-08-16 44 views
42

我是Ruby中的新程序。有人可以舉一個關於在Ruby中使用r +,w +,a +模式打開文件的例子嗎?他們和r,w,a有什麼不同?Ruby中的文件打開模式

請解釋一下,並舉例說明。

回答

85

文件打開模式並不是特定於ruby的 - 它們是IEEE標準1003.1(Single UNIX Specification)的一部分。你可以閱讀更多關於它在這裏:

http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html

r or rb 
    Open file for reading. 

w or wb 
    Truncate to zero length or create file for writing. 

a or ab 
    Append; open or create file for writing at end-of-file. 

r+ or rb+ or r+b 
    Open file for update (reading and writing). 

w+ or wb+ or w+b 
    Truncate to zero length or create file for update. 

a+ or ab+ or a+b 
    Append; open or create file for update, writing at end-of-file. 

包含字母「B」表示二進制文件中的所有模式。如果'b'不存在則是'純文本'文件。

表示「開放式」和「開放用於更新」之間的差爲:

當一個文件被打開與更新模式(「+」作爲模式參數中的第二個或第三個字符),輸入和輸出都可以在關聯的流上執行。但是,應用程序應確保輸出不會直接跟隨輸入,而不需要插入fflush()或文件定位函數(fseek(),fsetpos()或rewind())的中間調用,並且輸入不會緊跟在後面除非輸入操作遇到文件結束,否則無需對文件定位功能進行干預調用。

+0

對於一個對快速例子感興趣的人來說,以下演示附加到文件:'echo「foobar」> some_file && ruby​​ -e'File.open(「some_file」,「a」){| f | f.puts「catdog」}「' – mbigras