Go文件拷贝

package main import (
"os"
"io"
"fmt"
"io/ioutil"
) func main() {
/*
拷贝文件:
*/
srcFile := "/Users/ruby/Documents/pro/a/guliang.jpeg"
destFile := "guliang3.jpeg"
//total,err := CopyFile1(srcFile,destFile)
//total,err := CopyFile2(srcFile,destFile)
total,err := CopyFile3(srcFile,destFile)
fmt.Println(total,err)
} //一次性操作,文件过大时不适合
//ioutil包
func CopyFile3(srcFile,destFile string)(int,error){
bs,err := ioutil.ReadFile(srcFile) //一次性读
if err != nil{
return 0,err
}
err = ioutil.WriteFile(destFile,bs,0777) //一次性写
if err != nil{
return 0,err
}
return len(bs),nil
} //常用的拷贝方法
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)
} //该函数:用于通过io操作实现文件的拷贝,返回值是拷贝的总数量(字节),错误
//srcFile源文件
//destFile目标文件
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() //读写
bs := make([]byte,1024,1024)
n := -1 //读取的数据量
total := 0
for{
n,err = file1.Read(bs)
if err == io.EOF || n==0{
fmt.Println("拷贝完毕。。")
break
}else if err != nil{
fmt.Println("报错了。。")
return total,err
}
total += n
file2.Write(bs[:n])
}
return total,nil
}
Go文件拷贝的更多相关文章
- Linux系统下远程文件拷贝scp命令
在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...
- PC windows mobile 文件拷贝
在windows 系统中提供 RAPI.DLL,只需将RAPI.DLL中的,函数导出就可以实现文件拷贝.
- Java学习-045-目录中文件拷贝
挺晚的了,直接上码.敬请各位小主参阅,若有不足之处,敬请指正,非常感谢! 目录文件拷贝源码: /** * <strong>目录拷贝</strong><br> * & ...
- Dos命令完成文件拷贝
Dos命令初阶--文件拷贝 1.XCOPY命令 可以在cmd中录入:XCOPY /? 即可查看帮助 帮助: XCOPY Microsoft Windows [版本 6.2.9200] (c) 2012 ...
- linux或者windows下的文件拷贝
# 上代码 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import shutil import tarfile base_dir ...
- Linux下不同机器之间的文件拷贝
通过 scp 命令实现不同机器之间的文件拷贝. (1)本机考到目标机器:scp 本机文件 目的地: 如:scp /home/odp-web.war root@192.168.6.137:/usr/ ...
- Android——模拟文件拷贝
模拟文件拷贝:要求:要用progressDialog和子线程来模拟显示拷贝进度:进度完成后在主界面提示拷贝完成,分别使用普通方式和消息机制编写. layout文件: <?xml version= ...
- python 简单实现文件拷贝
1.背景 一日加班需要写一个文件拷贝的函数. 写了几版拷贝函数,有需要的直接粘贴过去 def CopyLocaleFile1(sorfile,desfile): #第一版 sorfp=open(sor ...
- 将通过find命令找到的文件拷贝到一个新的目录中
将通过find命令找到的文件拷贝到一个新的目录中 有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,我通过find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录 ...
- 文件拷贝以及base64
File inFile = new File("d:" + File.separator + "test.jpg"); File outFile = new F ...
随机推荐
- pytest学习8-运行上次执行失败的用例
该插件提供了两个命令行选项,用于重新运行上次pytest调用的失败: --lf,--last-failed- 只重新运行上次失败的用例,如果没有失败则全部运行 --ff,--failed-first- ...
- [JSOI2013] 快乐的 JYY - 回文自动机,DFS
#include <bits/stdc++.h> #define Sigma 30 #define MAXN 500010 #define int long long using name ...
- ReviewBoard使用:添加SVN
1.登录ReviewBoard,选择“Admin” 2.选择 “Repositores”,点击按钮“Add” 3.填写内容,然后点击按钮“SAVE”保存 Name:仓库名称(自己随意写) Hostin ...
- 全面了解 Java 原子变量类
目录 一.原子变量类简介 二.基本类型 三.引用类型 四.数组类型 五.属性更新器类型 参考资料
- react 和 vue 的优缺点总结
React推广了Virtual DOM并创造了新的语法——JSX,JSX允许开发者在JavaScript中书写HTML Vue使用模板系统而不是JSX,但能对现有应用的升级更加容易,这是因为模板用的就 ...
- [Web安全]SQL注入
Web网站最头痛的就是遭受攻击.Web很脆弱,所以基本的安防工作,我们必须要了解! 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意 ...
- 【转】Error,java对常量池来说字符串xxx的UTF8表示过长的解决及其理解
做项目,客户端这里自己模拟json数据时,一时没忍住搞得json字符串太长了(idea上大概有600多行吧),这个问题就蹦出来了.老方法直接google.百度然后看到一堆有关String 字符串常量池 ...
- Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099
方法:把catalina.bat 文件中set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m这行去掉,具体看下面两篇博客 https://blo ...
- 安装python3并新建python3的虚拟环境
安装依赖 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y 下载P ...
- Spring - Spring Boot - Thymeleaf - textual 模式
概述 thymeleaf 的 text 模式简单使用 过程会比较啰嗦, 需要结论的同学, 可以直接到底部去寻找 背景 想尝试做一个简单的 模板工具 目的 自动生成一些简单的 重复文本 思路 尽量简单 ...