Golang学习日志 ━━ 实现的几种方式

时间:2025-02-28 07:54:26
//纯粹以手动读写方式实现copy功能 func copyFilebyRW() { fmt.Println("========拷贝文件============") c1, err := ioutil.ReadFile("./") if err != nil { fmt.Println("读取错误") } err = ioutil.WriteFile("./", c1, 6044) if err != nil { fmt.Println("录入失败") } } //读取,copy到write中 func copyFileOStoOS() { srcFile, err := os.Open("./") defer srcFile.Close() if err != nil { fmt.Println("srcfile获取失败") return } dstFile, err := os.OpenFile("./", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) defer dstFile.Close() if err != nil { fmt.Println("dstfile获取失败") return } rtn, err := io.Copy(dstFile, srcFile) if err != nil { fmt.Println("copy失败") } fmt.Println("copy结束:", rtn) } //读取缓冲,copy到不缓冲write中 func copyFileBufftoOS() { srcFile, err := os.Open("./") defer srcFile.Close() if err != nil { fmt.Println("srcfile获取失败") return } srcBuf := bufio.NewReader(srcFile) dstFile, err := os.OpenFile("./", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) defer dstFile.Close() if err != nil { fmt.Println("dstfile获取失败") return } rtn, err := io.Copy(dstFile, srcBuf) if err != nil { fmt.Println("copy失败") } fmt.Println("copy结束:", rtn) } //读取,copy到缓冲write中 func copyFileOStoBuff() { srcFile, err := os.Open("./") defer srcFile.Close() if err != nil { fmt.Println("srcfile获取失败") return } dstFile, err := os.OpenFile("./", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) defer dstFile.Close() if err != nil { fmt.Println("dstfile获取失败") return } dstBuf := bufio.NewWriter(dstFile) rtn, err := io.Copy(dstBuf, srcFile) if err != nil { fmt.Println("copy失败") } // 进入缓冲后输出,这步骤非常重要,否则虽然read成功了,但write文件为空 dstBuf.Flush() fmt.Println("copy结束:", rtn) } //读取缓冲,copy到缓冲write中 func copyFileBufftoBuff() { srcFile, err := os.Open("./") defer srcFile.Close() if err != nil { fmt.Println("srcfile获取失败") return } srcBuf := bufio.NewReader(srcFile) dstFile, err := os.OpenFile("./", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) defer dstFile.Close() if err != nil { fmt.Println("dstfile获取失败") return } dstBuf := bufio.NewWriter(dstFile) rtn, err := io.Copy(dstBuf, srcBuf) if err != nil { fmt.Println("copy失败") } // 进入缓冲后输出,这步骤非常重要,否则虽然read成功了,但write文件为空 dstBuf.Flush() fmt.Println("copy结束:", rtn) }