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文件拷贝的更多相关文章

  1. Linux系统下远程文件拷贝scp命令

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

  2. PC windows mobile 文件拷贝

    在windows 系统中提供 RAPI.DLL,只需将RAPI.DLL中的,函数导出就可以实现文件拷贝.

  3. Java学习-045-目录中文件拷贝

    挺晚的了,直接上码.敬请各位小主参阅,若有不足之处,敬请指正,非常感谢! 目录文件拷贝源码: /** * <strong>目录拷贝</strong><br> * & ...

  4. Dos命令完成文件拷贝

    Dos命令初阶--文件拷贝 1.XCOPY命令 可以在cmd中录入:XCOPY /? 即可查看帮助 帮助: XCOPY Microsoft Windows [版本 6.2.9200] (c) 2012 ...

  5. linux或者windows下的文件拷贝

    #  上代码 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import shutil import tarfile base_dir ...

  6. Linux下不同机器之间的文件拷贝

    通过 scp 命令实现不同机器之间的文件拷贝. (1)本机考到目标机器:scp 本机文件 目的地: 如:scp /home/odp-web.war   root@192.168.6.137:/usr/ ...

  7. Android——模拟文件拷贝

    模拟文件拷贝:要求:要用progressDialog和子线程来模拟显示拷贝进度:进度完成后在主界面提示拷贝完成,分别使用普通方式和消息机制编写. layout文件: <?xml version= ...

  8. python 简单实现文件拷贝

    1.背景 一日加班需要写一个文件拷贝的函数. 写了几版拷贝函数,有需要的直接粘贴过去 def CopyLocaleFile1(sorfile,desfile): #第一版 sorfp=open(sor ...

  9. 将通过find命令找到的文件拷贝到一个新的目录中

    将通过find命令找到的文件拷贝到一个新的目录中 有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到另一个目录中,我通过find命令从源目录查找到符合条件的文件然后使用cp命令拷贝到目标目录 ...

  10. 文件拷贝以及base64

    File inFile = new File("d:" + File.separator + "test.jpg"); File outFile = new F ...

随机推荐

  1. hadoop 配置信息记录

    ssh-keygen  -t   rsa   -P  '' 192.168.157.148 hadoop01192.168.157.149 hadoop02 mkdir  /root/hadoopmk ...

  2. 前端 form select js处理

    1.代码如下 function initializeSelect(data) { var area = $("#ServiceName"); area.find("opt ...

  3. navicat异常 - 1130-host ... is not allowed to connect to this MySql server

    错误描述 用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理 解决方案 1.连接服务器: ...

  4. 洛谷P1068 分数线划定

    https://www.luogu.org/problem/P1068 #include<bits/stdc++.h> using namespace std; struct Can { ...

  5. Linux - Shell - 算数表达式 - 位运算

    概述 shell 中基于 $(()) 的 位运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 位运算 代码 #!/bin/bash # 位运算 arg1=2 arg2 ...

  6. 【音乐欣赏】《Heart Made of Stone》 - The Tech Thieves

    曲名:Heart Made of Stone 作者:The Tech Thieves Yeah It's been years now and I wonder Is it over? Do you ...

  7. 【16】LRUChache

    题目 LRU 思路 LRU 大家都不陌生,操作系统的作业做过,思路就是一旦添加或者访问某个元素,则将其的"访问属性"置零,而其他元素的访问属性统统减一,这样一来,访问属性最小的元素 ...

  8. socks5代理服务器搭建

    1.首先,编译安装SS5需要先安装一些依赖组件 yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl ...

  9. C++ 中字符串查找、字符串截取、字符串替换

    参照:C++基础-string截取.替换.查找子串函数 1.字符串查找 s.find(s1) //查找s中第一次出现s1的位置,并返回(包括0) s.rfind(s1) //查找s中最后次出现s1的位 ...

  10. js基础之--变量 作用域和内存问题

    基本类型:Undefind Null Boolean Number String 引用类型: 对象 在操作对象时,实际上实在操作对象的引用而不是实际的对象.为此,引用类型的值是按引用访问的. 从一个变 ...