在文本操作过程中经常涉及一些文件拷贝需求,这里介绍几种文件复制技巧。
方法1:使用io.Copy()
该实用程序的第一个版本将使用io.Copy()标准GO库的功能。实现中可以找到实用程序的逻辑。copy()职能如下:
func copy(src,dst string) (int64,error) {
sourceFileStat,err := os.Stat(src)
if err != nil{
return 0,err
}
if !sourceFileStat.Mode().IsRegular(){
return 0,fmt.Errorf("%s is not a regular file",src)
}
source,err := os.Open(src)
if err != nil{
return 0,err
}
defer source.Close()
destination,err := os.Create(dst)
if err != nil{
return 0,err
}
defer destination.Close()
nBytes,err := io.Copy(destination,source)
return nBytes,err
}
除了测试要复制的文件是否存在外(os.Stat(src)),并且是一个常规文件(sourceFileStat.Mode().IsRegular())这样您就可以打开它阅读,所有的工作都是由io.Copy(destination, source)声明。
方法2:使用ioutil.WriteFile()和ioutil.ReadFile()
复制文件的第二种方法是使用ioutil.ReadFile()和ioutil.WriteFile()职能。第一个函数将整个文件的内容读入字节片,第二个函数将字节片的内容写入文件中。实用程序的逻辑可以在以下GO代码中找到: