writestring的方式只适用于字符串的写入,对于十进制文件的写入只要使用write就可以了
package main import ( "os" "fmt" "io" ) func main() { list := os.Args if len(list) != 3 { fmt.Println(" usage: xxx srcFile dstFile") return } srcFileName := list[1] dstFileName := list[2] if srcFileName == dstFileName{ fmt.Println("源文件和目的文件不能相同") return } //只读方式打开源文件 sF, serr := os.Open(srcFileName) if serr != nil{ fmt.Println(" serr = ", serr) return } //新建目标文件 dF, derr := os.Create(dstFileName) if serr != nil{ fmt.Println(" derr = ", derr) return } //操作完成,关闭文件 defer dF.Close() defer sF.Close() //核心处理,从源文件获取内容,往目的文件写,读多少写多少 buf := make([]byte, 1024*4)//4k大小缓冲区 for true { n, err := sF.Read(buf) if err != nil { if err == io.EOF{ //代表文件读取完成 break } fmt.Println("err = ", err) } //往目的文件写,读多少写多少 dF.Write(buf[:n]) } }
然后使用命令进行exe文件的创建
E:awesomeProject>go build 文件拷贝.go
然后直接运行程序就可以了
E:awesomeProject>文件拷贝.exe errors接口的使用.go errors接口的使用copy.go