标签:byte 返回 文件 user 源文件 def err ror str
package main import ( "os" "io" "fmt" "io/ioutil" ) func main() { /* 拷贝文件: */ srcFile := "/Users/ruby/Documents/pro/a/guliang.jpeg" destFile := "guliang3.jpeg" //total,err := CopyFile1(srcFile,destFile) //total,err := CopyFile2(srcFile,destFile) total,err := CopyFile3(srcFile,destFile) fmt.Println(total,err) } //一次性操作,文件过大时不适合 //ioutil包 func CopyFile3(srcFile,destFile string)(int,error){ bs,err := ioutil.ReadFile(srcFile) //一次性读 if err != nil{ return 0,err } err = ioutil.WriteFile(destFile,bs,0777) //一次性写 if err != nil{ return 0,err } return len(bs),nil } //常用的拷贝方法 func CopyFile2(srcFile,destFile string)(int64,error){ file1,err := os.Open(srcFile) if err != nil{ return 0,err } file2,err := os.OpenFile(destFile,os.O_WRONLY|os.O_CREATE,os.ModePerm) if err != nil{ return 0,err } defer file1.Close() defer file2.Close() return io.Copy(file2,file1) } //该函数:用于通过io操作实现文件的拷贝,返回值是拷贝的总数量(字节),错误 //srcFile源文件 //destFile目标文件 func CopyFile1(srcFile,destFile string)(int,error){ file1,err :=os.Open(srcFile) if err != nil{ return 0,err } file2,err := os.OpenFile(destFile,os.O_WRONLY|os.O_CREATE,os.ModePerm) if err != nil{ return 0,err } defer file1.Close() defer file2.Close() //读写 bs := make([]byte,1024,1024) n := -1 //读取的数据量 total := 0 for{ n,err = file1.Read(bs) if err == io.EOF || n==0{ fmt.Println("拷贝完毕。。") break }else if err != nil{ fmt.Println("报错了。。") return total,err } total += n file2.Write(bs[:n]) } return total,nil }
标签:byte 返回 文件 user 源文件 def err ror str
原文地址:https://www.cnblogs.com/yzg-14/p/12251172.html