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)
    }
    
    
  • 相关阅读:
    SWT的TreeViewer和TableViewer的交互
    利用SVNKit进行版本库的树的导出
    使用SVNkit删除版本库的文件
    SVN中正确的add操作和delete操作
    SVNKIT一段代码的分析
    Eclipse中的SVN的冲突解决方案详解
    CSS3实现小于1px的边框(移动端)
    向左滑动删除一区域内容(移动端)
    下拉框文本框+复选(选中的显示在文本框中)
    弹性盒布局(自适应)
  • 原文地址:https://www.cnblogs.com/UncleZhao/p/14096032.html
Copyright © 2011-2022 走看看