【Golang】练习-复制文件
方法一:io.Copy
package main
import (
"io"
"log"
"os"
)
func CopyFile(sourceFile, destFile string) {
// 打开原始文件
originalFile, err := os.Open(sourceFile)
if err != nil {
log.Fatal(err)
}
defer originalFile.Close()
// 创建新的文件作为目标文件
newFile, err := os.Create(destFile)
if err != nil {
log.Fatal(err)
}
defer newFile.Close()
// 从源中复制字节到目标文件
_, err = io.Copy(newFile, originalFile)
if err != nil {
log.Fatal(err)
}
// log.Printf("Copied %d bytes.", bytesWritten)
// // 将文件内容flush到硬盘中
// err = newFile.Sync()
// if err != nil {
// log.Fatal(err)
// }
}
func main() {
sourceFile := "/eg/user.csv"
destFile := "/eg/user.csv1"
CopyFile(sourceFile, destFile)
}
方法二:ioutil.ReadFile
和ioutil.WriteFile
package main
import (
"io/ioutil"
"log"
)
func CopyFile(sourceFile, destFile string) {
//读取原文件
input, err := ioutil.ReadFile(sourceFile)
if err != nil {
log.Fatal(err)
}
//写入目标文件
err = ioutil.WriteFile(destFile, input, 0644)
if err != nil {
log.Fatal(err)
}
}
func main() {
sourceFile := "/eg/user.csv"
destFile := "/eg/user.csv1"
CopyFile(sourceFile, destFile)
}
方法三:os.Read
和 os.Write
package main
import (
"fmt"
"io"
"log"
"os"
)
func CopyFile(sourceFile, destFile string, buffSize int) {
buf := make([]byte, buffSize)
sf, err := os.Open(sourceFile)
if err != nil {
fmt.Println(err)
}
defer sf.Close()
df, err1 := os.Create(destFile)
if err1 != nil {
fmt.Println(err1)
}
defer df.Close()
for {
n, err := sf.Read(buf)
if err != nil && err != io.EOF {
log.Fatal(err)
}
if n == 0 {
break
}
if _, err := df.Write(buf[:n]); err != nil {
log.Fatal(err)
}
}
}
func main() {
sourceFile := "/eg/user.csv"
destFile := "/eg/user.csv1"
buffSize := 1024
CopyFile(sourceFile, destFile, buffSize)
}
标签:
Golang
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee