Golang 将一个文件复制到另一个文件

Golang 将一个文件复制到另一个文件

在Golang中,我们可以使用Os包和IO包将数据从一个文件复制到另一个文件。第一种方法中,我们将使用os.open、os.create和os.copy函数等OS包。而在第二种方法中,我们将使用ioutill.Readfile和ioutil.Writefile来复制文件。

方法1:使用OS包

在这个示例中,程序首先使用os.Open函数打开源文件source.txt。然后使用os.Generate函数创建目标文件destinaton.txt。然后使用io.Copy函数将源文件的内容复制到目标文件。

语法

os.Open

它用于打开一个要读取的文件。它接受一个输入,即要打开的文件名。

os.create

它有助于创建一个新文件。文件名作为输入在函数中给出。

os.copy

它可以帮助将内容从一个文件复制到另一个文件。在这个函数中,需要两个参数,即目标和源。

io.Copy

这是io包用于将文件从一个位置复制到另一个位置的功能。它接受两个参数,即源文件和目标文件。

步骤

  • 步骤1 - 在程序中创建一个名为main的包,并声明fmt(格式化包)、io包和os包。其中,main用于生成可执行代码,fmt用于格式化输入和输出。

  • 步骤2 - 创建一个main函数,并在该函数中创建sourceFile和DestinationFile作为变量,并分配给特定的文件。

  • 步骤3 - 在下一步中,使用内置的os.Open函数打开源文件,如果在打开文件时出现错误,则创建一个panic,并附带错误信息。

  • 步骤4 - 使用defer关键字和close函数关闭源文件。

  • 步骤5 - 在该步骤中,使用os.Create函数创建目标文件,如果文件未创建,则创建一个panic,并附带错误信息。

  • 步骤6 - 然后使用defer关键字和close函数关闭目标文件。

  • 步骤7 - 使用io.copy函数将源文件的内容复制到目标文件中。

  • 步骤8 - 如果出现任何错误,则创建一个panic,并附带错误信息。

示例

在此示例中,我们将使用与os包相关联的函数。

package main
import (
   "io"
   "os"
)

func main() {
   sourceFile := "src.txt"
   destinationFile := "dst.txt"

   source, err := os.Open(sourceFile)  //open the source file 
   if err != nil {
      panic(err)
   }
   defer source.Close()

   destination, err := os.Create(destinationFile)  //create the destination file
   if err != nil {
      panic(err)
   }
   defer destination.Close()
   _, err = io.Copy(destination, source)  //copy the contents of source to destination file
   if err != nil {
      panic(err)
   }
}

输出

If the file exists content will be copied to the file successfully but if the file is not present, file not found will be printed on the console.

方法2:使用io/ioutil包

在这种方法中,我们将使用io/ioutil包中的函数– ioutil.ReadFile和io.WriteFile,前者用于读取源文件的内容,而后者用于将内容写入目标文件。

语法

Ioutil.ReadFile

此功能可在ioutil包中找到,并用于以文件名作为函数输入来读取文件的内容。

ioutil.WriteFile

在Go中,WriteFile属于ioutil包,包含三个参数,第一个是要写入数据的文件名,第二个是要写入的数据,第三个是文件权限。如果函数成功执行,数据将被写入文件中。

步骤

  • 步骤1 - 创建一个main包,并在程序中声明fmt(格式化包)和io/ioutil包,其中main生成可执行代码,fmt帮助格式化输入和输出。

  • 步骤2 - 创建一个main函数,在该函数中创建一个变量sourceFile和destinationFile,并将这些变量分配给相应的文件。

  • 步骤3 - 在此步骤中,使用ioutil.ReadFile读取源文件的内容,并检查是否在读取文件内容时出现任何错误,如果有错误则打印“读取文件错误”消息并返回。

  • 步骤4 - 然后,使用ioutil.WriteFile函数将从源文件读取的内容写入目标文件,同样检查是否在将内容写入文件时出现任何错误,如果有错误则打印失败消息并返回。

  • 步骤5 - 最后,如果没有错误,则表示内容成功复制到文件中,并使用fmt.Println()函数在控制台上打印成功消息,其中ln表示换行。

示例

在此示例中,将使用io/ioutil包的函数来执行程序。

package main
import (
   "fmt"
   "io/ioutil"
)

func main() {
   sourceFile := "src.txt"
   destinationFile := "dst.txt"

   data, err := ioutil.ReadFile(sourceFile) //read the contents of source file
   if err != nil {
      fmt.Println("Error reading file:", err)
      return
   }
   err = ioutil.WriteFile(destinationFile, data, 0644) //write the content to destination file
   if err != nil {
      fmt.Println("Error writing file:", err)
      return
   }
   fmt.Println("File copied successfully")  //success message will be printed when         one file is copied into another
}

输出

If file is present the content of source file will be copied to the destination file and success message will be printed on the console but if the error appears failure message will be printed on the console i.e.

Error reading file: open src.txt: no such file or directory

结论

我们使用两种方法执行了将一个文件复制到另一个文件的程序。第一种方法中,我们使用了os包的函数,第二种方法中,我们使用了io/ioutil包的函数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程