Go复制文件教程展示了如何在Golang中复制文件。我们展示了三种在Go中复制文件的方法。
我们使用ioutil.ReadFile,ioutil.WriteFile,io.Copy,File.Read,File.Write函数复制文件。
$ go version go version go1.18.1 linux/amd64
我们使用Go版本1.18。
复制文件示例
在第一个示例中,我们使用了ioutil包中的函数。
package main
import (
"io/ioutil"
"log"
)
func main() {
src := "words.txt"
dest := "words2.txt"
bytesRead, err := ioutil.ReadFile(src)
if err != nil {
log.Fatal(err)
}
err = ioutil.WriteFile(dest, bytesRead, 0644)
if err != nil {
log.Fatal(err)
}
}
ioutil.ReadFile读取指定的文件并返回字节片中的内容。ioutil.WriteFile将指定的字节片写入目标文件。
Go复制文件示例二
在第二个例子中,我们使用io.Copy函数来复制一个文件。
package main
import (
"io"
"log"
"os"
)
func main() {
src := "words.txt"
dst := "words2.txt"
fin, err := os.Open(src)
if err != nil {
log.Fatal(err)
}
defer fin.Close()
fout, err := os.Create(dst)
if err != nil {
log.Fatal(err)
}
defer fout.Close()
_, err = io.Copy(fout, fin)
if err != nil {
log.Fatal(err)
}
}
我们用os.Open打开源文件,用os.Create创建目标文件;这两个文件的句柄被传递给io.Copy函数。
复制文件示例三
File.Read从文件中读取最多len(b)个字节,其中b是一个字节片段。File.Write函数将提供的字节切片写入目标文件。
package main
import (
"io"
"log"
"os"
)
func main() {
src := "words.txt"
dst := "words2.txt"
buf := make([]byte, 1024)
fin, err := os.Open(src)
if err != nil {
log.Fatal(err)
}
defer fin.Close()
fout, err := os.Create(dst)
if err != nil {
log.Fatal(err)
}
defer fout.Close()
for {
n, err := fin.Read(buf)
if err != nil && err != io.EOF {
log.Fatal(err)
}
if n == 0 {
break
}
if _, err := fout.Write(buf[:n]); err != nil {
log.Fatal(err)
}
}
}
我们创建了一个1024字节的缓冲区。在for循环中,我们将源文件中的字节读入缓冲区,并将缓冲区写入目标文件。当没有更多数据要读取时,File.Read函数返回0,我们中断循环。
在本教程中,我们在Golang中复制了文件。
列出所有Go教程。
