func fileread(path string)rb := make(byte, 1024, 1024)
for
fmt.println(string(rb[:n]))
} err = file.close()
if err != nil
}func bufio(path string)
defer file.close()
/* const (
defaultbufsize = 4096 //預設的緩衝區為4096
) */
// 建立乙個 *reader ,是帶緩衝區的
reader := bufio.newreader(file)
// 迴圈讀取檔案的內容
for
// 輸出內容,如果是用println會多出現乙個空行,println自帶換行
fmt.printf(str)
} fmt.println("檔案讀取結束!")
}func ioutil(path string)
// 把檔案內容讀取到終端
fmt.println(string(filestr))
// 沒有開啟和關閉檔案控制代碼,因為兩個操作都封裝到readfile函式內部
}
func writehello(path string)defer file.close()
str := "hello,sonfer!\r\n"
// 寫入時 使用帶快取的 *writer
writer := bufio.newwriter(file)
for i := 0; i < 5; i++
// 因為writer是帶快取,因此呼叫writerstring方法時,
// 內容先寫到快取的,所以呼叫flush方法,將緩衝資料
// 真實寫入到檔案中,否則檔案中沒有資料!
writer.flush()
} // 開啟檔案時追加內容,如果是os.o_trunc則清空檔案內容在寫入
if err != nil
defer file.close()
str := "追加的!\r\n"
writer := bufio.newwriter(file)
for i := 0; i < 7; i++
writer.flush()
}
package mainimport (
"bufio"
"fmt"
"io"
"os"
)func readwrite(srcpaht, despath string)
rwfile, err := os.openfile(despath, os.o_rdwr|os.o_create|os.o_trunc, 0644)
if err != nil
defer rdfile.close()
defer rwfile.close()
// 建立讀寫緩衝區
reader := bufio.newreader(rdfile)
writer := bufio.newwriter(rwfile)
for
// 緩衝區中寫檔案
writer.writestring(str)
} fmt.println("over!")
}func main()
如果返回的錯誤為nil,說明檔案或資料夾存在
如果返回的錯誤型別使用os.isnotexist()判斷為true,說明檔案或資料夾不存在
如果返回的錯誤為其它型別,則不確定是否在存在
func pathexists(path string) (bool, error)if os.isnotexist(err)
return false, err
}
package mainimport (
"bufio"
"errors"
"fmt"
"io"
"os"
)func fileexit(path string) (bool, error)
if os.isnotexist(err)
return false, err
}// 編寫乙個拷貝函式,接收兩個檔案路徑,原始檔存在,目標檔案不存在
func copyfile(destfile, srcfile string) (written int64, err error)
// 判斷目標檔案是否存在,0為隨意數字
destfiletrue, err := fileexit(destfile)
if destfiletrue == true
// 通過srcfile獲取 reader
readfile, err := os.open(srcfile)
if err != nil
defer readfile.close()
reader := bufio.newreader(readfile)
//通過 destfile, 獲取到 writer
writefile, err := os.openfile(destfile, os.o_rdonly|os.o_create, 0644)
if err != nil
defer writefile.close()
writer := bufio.newwriter(writefile)
return io.copy(writer, reader)
}func main() else
}
統計字元數量
package mainimport (
"bufio"
"fmt"
"io"
"os"
)type charcount struct
func main()
defer rdfile.close()
reader := bufio.newreader(rdfile)
for
fmt.printf(str)
for _, v := range rune(str)
} }fmt.printf("字元的個數為:%v,數字的個數為:%v,空格的個數為:%v,其他字元為:%v", count.chcount, count.numcount, count.spacecount, count.othercount)
}
Go 檔案讀寫
看了下go語言的標準庫,最開始看了下io庫想著看看go語言提供的函式如何實現檔案的讀寫,粗略的看了下就想著使用go語言提供的方法讀寫檔案試下吧。讀檔案,示例 package main import fmt io ioutil os const file test.txt read file func...
go語言讀寫檔案操作方法
package main import bufio fmt io os 寫 func writefile path string 使用完畢,需要關閉檔案 defer f.close var buf string for i 0 i 5 i fmt.println n n 讀檔案內容方法 func r...
GO 檔案的讀寫
首先寫乙個檔案 package main import os fmt func writefile path string 寫檔案 var buf string for i 0 i 10 i n n 關閉檔案 defer f.close func main 執行完成後就會在程式的同目錄生成乙個dem...