Golang 檔案操作的深入研究

2021-09-13 12:44:23 字數 2591 閱讀 7717

一般來說常用的有四種

使用file自帶的read方法

使用bufio庫的read方法

使用io/ioutil庫的readall()

使用io/ioutil庫的readfile()

先說結論

當每次讀取塊的大小小於4kb,建議使用bufio.newreader(f), 大於4kb用bufio.newreadersize(f,快取大小)

要讀reader, 圖方便用ioutil.readall()

一次性讀取檔案,使用ioutil.readfile()

反正不建議用普通的read

總之要效能就bufio,方便就ioutil

這篇文章有深入研究

以下列出各種方法的示例

func read1(path string)  

defer fi.close()

buf := make(byte,1024)

for

if 0 ==n

fmt.println(string(buf[:n]))

} }

func read2(path string)  

defer fi.close()

r := bufio.newreader(fi)

buf := make(byte,1024)

for

if 0 ==n

fmt.println(string(buf[:n]))

} }

func read4(path string)

fmt.println(r)

}

或者

func read3(path string)

defer fi.close()

_,err = ioutil.readall(fi)

}

建立名稱為name的目錄,許可權設定是perm,例如0777

根據path建立多級子目錄,例如astaxie_test1_test2。

刪除名稱為name的目錄,當目錄下有檔案或者其他目錄時會出錯

根據path刪除多級子目錄,如果path是單個名稱,那麼該目錄下的子目錄全部刪除。

package main

import (

"fmt"

"os"

)func main()

os.removeall("astaxie")

}

新建檔案可以通過如下兩個方法

根據提供的檔名建立新的檔案,返回乙個檔案物件,預設許可權是0666的檔案,返回的檔案物件是可讀寫的。

根據檔案描述符建立相應的檔案,返回乙個檔案物件

通過如下兩個方法來開啟檔案:

該方法開啟乙個名稱為name的檔案,但是是唯讀方式,內部實現其實呼叫了openfile。

開啟名稱為name的檔案,flag是開啟的方式,唯讀、讀寫等,perm是許可權

寫入byte型別的資訊到檔案

在指定位置開始寫入byte型別的資訊

寫入string資訊到檔案

讀取資料到b中

從off開始讀取資料到b中

package main

import (

"fmt"

"os"

)func main()

defer fl.close()

buf := make(byte, 1024)

for

os.stdout.write(buf[:n])

}}

呼叫該函式就可以刪除檔名為name的檔案

包名 」io/ioutil「

func readall(r io.reader) (byte, error)

讀取 r 中所有資料並返回

func main()
func readfile(filename string) (byte, error)

直接讀取檔案

func main()
func writefile(filename string, data byte, perm os.filemode) error

writefile 向檔案 filename 中寫入資料 data

如果檔案不存在,則以 perm 許可權建立該檔案

如果檔案存在,os.filemode 不同使用不同的規則

func main()
func readdir(dirname string) (os.fileinfo, error)

readdir 讀取目錄 dirmane 中的所有目錄和檔案(不包括子目錄)

返回讀取到的檔案的資訊列表和讀取過程中遇到的任何錯誤

返回的檔案列表是經過排序的

func main() 

fmt.println("")

fmt.println(err)

}

先參考這篇部落格,有時間深入研究

flex Bindable深入研究

bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...

URLRequest深入研究

urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...

深入研究AsyncTask

asynctask提供了一種在後台執行操作而在ui執行緒顯示結果的方式,而且開發者不必操作執行緒或者handler.乙個asynctask定義了三種泛型分別是params,progress,result,還有四個函式分別是onpreexecute doinbackground onprogressu...