CodeFun Go

复制文件的两种方式

在本文中,我们将看到两种复制文件的方法。

第一种

io.Copy()可用于创建从 src 到 dest 的文件副本。

func Copy(dst Writer, src Reader) (written int64, err error)

它返回写入目标的字节数

第二种

如果文件的内容较少,那么我们也可以先读取文件(ioutil.ReadFile)的内容,然后将所有内容写入(ioutil.WriteFile)新文件。

package main

import (
    "fmt"
    "io"
    "io/ioutil"
    "log"
    "os"
)

func main() {
    // 1
    src, err := os.Open("original.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer src.Close()

    dest, err := os.Create("new1.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer dest.Close()

    bytesWritten, err := io.Copy(dest, src)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Bytes Written: %d\n", bytesWritten)

    // 2
    bytesRead, err := ioutil.ReadFile("original.txt")
    if err != nil {
        log.Fatal(err)
    }

    err = ioutil.WriteFile("new2.txt", bytesRead, 0755)
    if err != nil {
        log.Fatal(err)
    }
}
Bytes Written: 14