zoukankan      html  css  js  c++  java
  • 【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)
    }
    
    
  • 相关阅读:
    做汉堡(续)
    做汉堡
    <构建之法>3-5章感想
    《构建之法》1-2章感想
    四则运算界面练习
    快速排序
    冒泡算法(思路1)
    希尔排序
    KMP算法
    1、基础算法题
  • 原文地址:https://www.cnblogs.com/UncleZhao/p/14096032.html
Copyright © 2011-2022 走看看