当前位置:网站首页>Go three ways to copy files
Go three ways to copy files
2022-04-23 19:21:00 【Handsome that handsome】
Method 1 :io Under bag Read() and Write() Method realization
We can go through io Under bag Read() and Write() Method , Reading while writing , You can copy files . This method is to read the file by block , The size of the block will also affect the performance of the program
The function of this function : Copy files , The return value is the total number of copies ( byte ), error
func copyFile1(srcFile,destFile string)(int,error){
file1,err:=os.Open(srcFile)
if err != nil{
return 0,err
}
file2,err:=os.OpenFile(destFile,os.O_WRONLY|os.O_CREATE,os.ModePerm)
if err !=nil{
return 0,err
}
defer file1.Close()
defer file2.Close()
// Copy the data
bs := make([]byte,1024,1024)
n :=-1// Amount of data read
total := 0
for {
n,err = file1.Read(bs)
if err == io.EOF || n == 0{
fmt.Println(" Copy complete ..")
break
}else if err !=nil{
fmt.Println(" Wrong report ...")
return total,err
}
total += n
file2.Write(bs[:n])
}
return total,nil
}
Method 2 :io Under bag Copy() Method realization
We can also use io Under bag Copy() Method .
The sample code is as follows :
func copyFile2(srcFile, destFile string)(int64,error){
file1,err:=os.Open(srcFile)
if err != nil{
return 0,err
}
file2,err:=os.OpenFile(destFile,os.O_WRONLY|os.O_CREATE,os.ModePerm)
if err !=nil{
return 0,err
}
defer file1.Close()
defer file2.Close()
return io.Copy(file2,file1)
}
Method 3. ioutil Under bag ReadFile() and WriteFile() Method realization
func CopyFile2(srcFile, destFile string) (int, error) {
// Read all data in the target file at one time
content, err := ioutil.ReadFile(srcFile)
if err != nil {
fmt.Println("err:", err)
return 0, err
}
// Write the data in the target file to the specified file
err = ioutil.WriteFile(destFile, content, os.ModePerm)
if err != nil {
fmt.Println("err:", err)
return 0, err
}
return len(content),nil
}
版权声明
本文为[Handsome that handsome]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204210557451159.html
边栏推荐
猜你喜欢

FTP、ssh远程访问及控制

Class loading process of JVM

Lottery applet, mother no longer have to worry about who does the dishes (assign tasks), so easy

An algorithm problem was encountered during the interview_ Find the mirrored word pairs in the dictionary

Client interns of a large factory share their experience face to face

Reflection on the performance of some OpenGL operations in the past

mysql通过binlog恢复或回滚数据

The platinum library cannot search the debug process records of some projection devices

Esp01s with Arduino development environment

Intuitive understanding of the essence of two-dimensional rotation
随机推荐
考试系统进入试卷优化思路
Tencent cloud GPU best practices - remote development training using jupyter pycharm
该买什么设备,Keysight 给你挑好了
Parsing headless jsonarray arrays
std::stoi stol stoul stoll stof stod
Raspberry pie 18b20 temperature
White screen processing method of fulter startup page
Steps to build a deep learning environment GPU
PostgreSQL
Strange passion
Openlayers 5.0 two centering methods
Common SQL commands
Openlayers draw rectangle
腾讯云GPU最佳实践-使用jupyter pycharm远程开发训练
Oracle configuration st_ geometry
Executor、ExecutorService、Executors、ThreadPoolExecutor、Future、Runnable、Callable
MySQL syntax collation (3)
开关电源设计分享及电源设计技巧图解
Wechat applet part of the mobile phone Preview PDF did not respond
ArcMap connecting ArcGIS Server