1. 程式人生 > >檔案開啟模式 w+ r+ a+ 區別和辨析

檔案開啟模式 w+ r+ a+ 區別和辨析

w+ 開啟檔案並讀寫  1. 檔案存在,則清空(也即寫入空); 2. 檔案不存在,則建立檔案 ; 3. 檔案流定位到開始位置, 所以read() 會得到空。

r+  開啟檔案並讀寫   1. 檔案存在,開啟檔案,檔案指標定位到檔案開始位置; 2. 檔案不存在, 則報錯檔案不存在

a+  開啟檔案並讀添   1. 檔案存在,開啟檔案,檔案指標定位到檔案開始位置,但不清空;2.  檔案不存在,建立檔案;3. 開啟後讀取時,在檔案開頭位置,4. 寫入時,新增到文章末尾,並且指標位於新增後的末尾,所以再次讀取會亂碼

另外,

1. w 開啟檔案寫入,也會清空檔案,如果使用read(),則報錯;a 開啟檔案新增,資料流新增到檔案末尾,而不是w模式的清空後新增。

2. b可以附加到上述的字母后,形成rb, rb+, wb等等模式,針對二進位制檔案,比如exe, elf, jpeg格式的檔案,進行檔案操作; 在unix 型別的系統上,text格式與二進位制的處理相同,但是非unix型別的系統上,換行格式不同,所以需要用加b模式來在指定是否是二進位制。

reference:

http://man7.org/linux/man-pages/man3/fopen.3.html

http://stackoverflow.com/questions/16208206/confused-by-python-file-mode-w

http://www.cnblogs.com/operaculus/p/5680850.html