檔案操作API介紹
建立檔案
func Create(name string) (file *File, err Error)
根據提供的檔案名稱建立新的檔案,返回一個檔案對象,預設許可權是0666的檔案,返回的檔案對象是可讀寫的。
func NewFile(fd uintptr, name string) *File
根據檔案描述符建立相應的檔案,返回一個檔案對象 開啟檔案
func Open(name string) (file *File, err Error)
該方法開啟一個名稱為name的檔案,但是是唯讀方式,內部實現其實調用了OpenFile。
func OpenFile(name string, flag int, perm uint32) (file *File, err Error)
開啟名稱為name的檔案,flag是開啟的方式,唯讀、讀寫等,perm是許可權 寫檔案
func (file *File) Write(b []byte) (n int, err Error)
寫入byte類型的資訊到檔案
func (file *File) WriteAt(b []byte, off int64) (n int, err Error)
在指定位置開始寫入byte類型的資訊
func (file *File) WriteString(s string) (ret int, err Error)
寫入string資訊到檔案 讀檔案
func (file *File) Read(b []byte) (n int, err Error)
讀取資料到b中
func (file *File) ReadAt(b []byte, off int64) (n int, err Error)
從off開始讀取資料到b中 刪除檔案
func Remove(name string) Error
調用該函數就可以刪除檔案名稱為name的檔案 代碼實現
package mainimport ( "fmt" "io" "os")func main() { list := os.Args if len(list) != 3 { fmt.Println("error:缺少參數") return } srcName := list[1] dstName := list[2] srcFile, err1 := os.Open(srcName) dstFile, err2 := os.Create(dstName) if err1 != nil || err2 != nil { fmt.Println("err") return } defer srcFile.Close() defer dstFile.Close() buf := make([]byte, 4*1024) //4k緩衝區 //核心處理 for { n, err := srcFile.Read(buf) if err != nil { if err == io.EOF { //檔案讀取完畢 break } fmt.Println("err:", err) } dstFile.Write(buf[:n]) //讀多少寫多少 }}
運行檢測