基本介紹
檔案在程式中是以流的形式來操作的;
流:資料在資料來源(檔案) 和程式(記憶體)之間經歷的路徑;
輸入流(讀檔案):資料從資料來源(檔案)到程式(記憶體)的路徑;
輸出流(寫檔案):資料從程式(記憶體)到資料來源(檔案)的路徑;
主要是os包裡的file的結構體來對檔案進行操作; file代表乙個開啟的檔案物件。
常用的檔案操作函式和方法
開啟乙個檔案進行讀操作;
os.open(name string) (*file, error)
關閉乙個檔案:
file.close()
小小的demo
// 通過os 開啟乙個檔案
// file 的叫法:file物件, file指標, file 檔案控制代碼
file, error := os.open("e:/text01.txt")
if error != nil
// 輸出下檔案,看看檔案是什麼? 檔案就是指標 *file
fmt.printf("file==%v", file) // file==&
// 關閉檔案
error = file.close()
if error != nil
寫檔案操作應用例項
func openfile(name string, flag int, perm filemode) (file *file, err error)
說明:os.openfile是乙個更一般性的檔案開啟函式,它會使用指定的選項(如o_rdonly等),指定的模式(如0666等)開啟指定名稱的檔案。如果操作成功,返回的檔案物件可用於i/o。如果出錯,錯誤底層型別就是 *patherror.
第二個引數:檔案開啟模式(可以組合);
第三個引數:許可權控制(linux/unix下使用)
r --> 4
w --> 2
x --> 1
實際案例:
// 建立乙個新檔案,寫入內容 5句 "hello, gardon"
// 1.開啟檔案 e:/abc_w.txt
filepath := "e:/abc_w.txt"
file, err := os.openfile(filepath, os.o_wronly | os.o_create, 0666)
if err != nil
// 及時關閉file控制代碼
defer file.close()
// 準備寫入內容
str := "hello, gardon\n"
// 寫入時,使用帶快取的 *writer
writer := bufio.newwriter(file)
for i:=0; i < 5; i ++
// 因為writer是帶快取,因此在呼叫writestring方法時,其實
// 記憶體是先寫入到快取的,所以需要呼叫flush方法,將快取的資料
// 真正寫入到檔案中,否則檔案中會沒有資料
writer.flush()
判斷檔案是否存在
golang判斷檔案或者資料夾是否存在的方法使用os.stat() 函式返回的錯誤值進行判斷:
1.如果返回的錯誤為nil,說明檔案或者資料夾存在
2.如果返回的錯誤型別使用os.isnotexist() 判斷為true,說明檔案或者資料夾不存在
3.如果返回的錯誤為其他型別,則不確定是否存在
實現的功能函式:
func pathexists(filepath string) (bool, error)
if os.isnotexist(err)
return false, err
}
go檔案操作
go語言支援的檔案操作很多 1 傳統的檔案操作 匯入檔案操作需要的包 import os f os.open filepath f.read byte f.close 這裡寫 片openfile,err os.open test.go 正確開啟檔案返回err nil 這裡如果檔案開啟異常,則丟擲錯誤...
go檔案操作
os.open 函式能夠開啟乙個檔案,返回乙個開啟的檔案物件和乙個err。對得到的檔案物件呼叫close 方法能夠關閉檔案 為了防止檔案忘記關閉,我們通常使用defer關閉檔案 是向作業系統要了乙個檔案io,如果程式沒有顯示的關閉檔案,就不會釋放這個檔案io,造成檔案不安全 func main 關閉...
GO檔案操作詳解
package main 1 匯入 os 包,建立,讀,寫檔案的函式都在該包 import fmt os func main 3 寫入檔案操作 count,err1 fp.writestring 我去買些橘子,你就在此地,不要隨意走動 if err1 nil else 4 關閉檔案,如果開啟檔案不關...