os.open()
函式能夠開啟乙個檔案,返回乙個開啟的檔案物件和乙個err
。對得到的檔案物件呼叫close()
方法能夠關閉檔案
為了防止檔案忘記關閉,我們通常使用defer關閉檔案
是向作業系統要了乙個檔案io,如果程式沒有顯示的關閉檔案,就不會釋放這個檔案io,造成檔案不安全
func main()
// 關閉檔案
file.close()
}
開啟的檔案物件支援read方法,能夠讀取檔案中的內容
它接收乙個位元組切片,返回讀取的位元組數和可能的具體錯誤,讀到檔案末尾時會返回0
和io.eof(end of file)
//將檔案中的內容讀取到tmp中,
var tmp = make(byte, 128)
n, err := file.read(tmp)
fmt.printf("讀取了%d位元組資料\n", n)
fmt.println(string(tmp[:n]))
var content byte
var tmp = make(byte, 128)
for
if err != nil
}fmt.println(string(content))
bufio是在file的基礎上封裝了一層api,支援更多的功能。用newreader建立乙個reader出來,可以指定按多少個位元組來讀,也可以一行一行的讀
是帶有緩衝區的,先從磁碟將內容讀到緩衝區,然後再讀到**裡去,寫入也是一樣,將**要寫入的文字寫到緩衝區,再寫到磁碟上面
reader := bufio.newreader(file)
for
fmt.println("檔案讀完了")
break
} if err != nil
fmt.print(line)
}
還有更簡便的方式,封裝的更完善的方式
io/ioutil
包的readfile
方法能夠讀取完整的檔案,只需要將檔名作為引數傳入,返回的是檔案內容和錯誤
要注意的就是檔案不能太大了,會撐爆記憶體
func main()
fmt.println(string(content))
}
想精確的設定每次讀取的數量,可以用原始的read,如果想快速的讀取整個檔案,就用ioutil,如果寫入的時候想加緩衝區,使寫入的更快一點,可以用bufio,因為他先把要寫入的內容寫到緩衝區裡,等到緩衝區到達一定的閾值後,才會呼叫作業系統檔案io的介面,把檔案寫入到磁碟裡去,減少了和作業系統頻繁的io操作過程,所以會提高效率
os.openfile()
函式能夠以指定模式開啟檔案,從而實現檔案寫入相關功能
func openfile(name string, flag int, perm filemode) (*file, error)
name
:要開啟的檔名flag
:開啟檔案的模式。模式有以下幾種:
os.o_wronly
只寫
os.o_create
建立檔案
os.o_rdonly
唯讀
os.o_rdwr
讀寫
os.o_trunc
清空
追加perm
:檔案許可權,乙個八進位制數。r(讀)04,w(寫)02,x(執行)01
func main()
defer file.close()
str := "hello 沙河"
file.write(byte(str)) //寫入位元組切片資料
file.writestring("hello 小王子") //直接寫入字串資料
}
要注意的是要進行flush操作,把緩衝區的內容真正的寫入到磁碟裡去
func main()
defer file.close()
writer := bufio.newwriter(file)
for i := 0; i < 10; i++
writer.flush() //將快取中的內容寫入檔案
}
func main()
}
os.stat()返回檔案資訊,能夠判斷檔案是否存在
func stat(name string) (fileinfo, error)
go檔案操作
go語言支援的檔案操作很多 1 傳統的檔案操作 匯入檔案操作需要的包 import os f os.open filepath f.read byte f.close 這裡寫 片openfile,err os.open test.go 正確開啟檔案返回err nil 這裡如果檔案開啟異常,則丟擲錯誤...
Go 35 Go 檔案操作
基本介紹 檔案在程式中是以流的形式來操作的 流 資料在資料來源 檔案 和程式 記憶體 之間經歷的路徑 輸入流 讀檔案 資料從資料來源 檔案 到程式 記憶體 的路徑 輸出流 寫檔案 資料從程式 記憶體 到資料來源 檔案 的路徑 主要是os包裡的file的結構體來對檔案進行操作 file代表乙個開啟的檔...
GO檔案操作詳解
package main 1 匯入 os 包,建立,讀,寫檔案的函式都在該包 import fmt os func main 3 寫入檔案操作 count,err1 fp.writestring 我去買些橘子,你就在此地,不要隨意走動 if err1 nil else 4 關閉檔案,如果開啟檔案不關...