// //

【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.ReadFileioutil.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.Reados.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)
}

posted @   易波叶平  阅读(137)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
点击右上角即可分享
微信分享提示