• 【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)
    }
    
    
  • 相关阅读:
    AGC041
    二分图 学习笔记
    区间DP 学习笔记
    3月21日考试 题解(数据结构+区间DP+贪心)
    Tarjan 做题总结
    3月15日考试 题解(数学+背包+线段树)
    差分约束 学习笔记
    Tarjan算法 学习笔记
    拓扑排序 学习笔记
    并查集 学习笔记
  • 原文地址:https://www.cnblogs.com/UncleZhao/p/14096032.html
Copyright © 2020-2023  润新知