30 Golang文件、目录操作
func copy(srcFileName string, dstFileName string) (err error) {
sFile, err1 := os.Open(srcFileName)
//关闭文件流,防止内存泄露
defer sFile.Close()
dFile, err2 := os.OpenFile(dstFileName, os.O_CREATE|os.O_WRONLY, 0666)
defer dFile.Close()
if err1 != nil {
return err1
}
if err2 != nil {
return err2
}
var tempSlice = make([]byte, 128)
sFile.Read(tempSlice)
for {
//边读边写
//读取
n1, err := sFile.Read(tempSlice)
//如果读取完毕,跳出for循环
if err == io.EOF {
break
}
if err != nil {
return err
}
//写入
if _, err := dFile.Write(tempSlice[:n1]); err != nil {
return err
}
}
return nil
}
func main() {
src := "D:/test.txt"
dst := "D:/new-test.txt"
err := copy(src, dst)
if err == nil {
fmt.Println("复制文件成功")
} else {
fmt.Println(err)
}
}