1、文件案例:拷贝文件

示例:

  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "io"
  6. "os"
  7. )
  8.  
  9. func main() {
  10. list := os.Args //获取命令行参数
  11. if len(list) != 3 {
  12. fmt.Println("usage: xxx srcFile dstFile")
  13. return
  14. }
  15.  
  16. srcFileName = list[1]
  17. drcFileName = list[1]
  18.  
  19. if srcFileName == drcFileName {
  20. fmt.Println("源文件和目的文件名字不能相同")
  21. return
  22. }
  23.  
  24. //只读方式打开源文件
  25. sF, err1 := os.Open(srcFileName)
  26. if err1 != nil {
  27. fmt.Println("err1 = ", err1)
  28. return
  29. }
  30.  
  31. //新建目的文件
  32. dF, err2 := os.Create(srcFileName)
  33. if err2 != nil {
  34. fmt.Println("err2 = ", err2)
  35. return
  36. }
  37.  
  38. //操作完毕,需要关闭文件
  39. defer sF.Close()
  40. defer dF.Close()
  41.  
  42. //核心处理,从源文件读取内容,往目的文件写,读多少写多少
  43. buf := make([]byte 4*1024) //4k大小临时缓冲区
  44. for {
  45. n, err := sF.Read(but) //从源文件读取内容
  46. if err != nil {
  47. if err == io.EOF //文件读取完毕
  48. break
  49. }
  50. fmt.Println("err = ", err)
  51. }
  52. //往目的文件写,读多少写多少
  53. dF.Write(buf[:n])
  54.  
  55. }

执行结果:

  1. #在cmd中运行:
  2. D:\GoFiles\src\hello_01>go run mai1.go 2.txt 1.txt
  3.  
  4. err = EOF

拷贝效果如下:

go语言之进阶篇拷贝文件案例的更多相关文章

  1. go语言之进阶篇接口转换

    1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Pers ...

  2. Go语言之进阶篇文件传输

    一.文件传输 1.文件传输原理 2.文件传输 示例: 发送方: send_file.go package main import ( "fmt" "io" &q ...

  3. go语言之进阶篇文件常用操作接口介绍和使用

    一.文件常用操作接口介绍 1.创建文件 法1: 推荐用法 func Create(name string) (file *File, err Error) 根据提供的文件名创建新的文件,返回一个文件对 ...

  4. Javascript进阶篇——总结--DOM案例+选项卡效果

    断断续续的把慕课的JavaScript基础和进阶看完了,期间不怎么应用有的都忘记了,接下来多开始写些效果,进行实际应用. 制作一个表格,显示班级的学生信息. 1. 鼠标移到不同行上时背景色改为色值为 ...

  5. Go语言之进阶篇操作redis

    1.windows安装redis 软件包下载地址: https://github.com/MicrosoftArchive/redis/releases 1.1.安装--->下一步---> ...

  6. Go语言之进阶篇爬捧腹网

    1.爬捧腹网 网页规律: https://www.pengfu.com/xiaohua_1.html   下一页 +1 https://www.pengfu.com/xiaohua_2.html 主页 ...

  7. Go语言之进阶篇爬百度贴吧并发版

    1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strco ...

  8. Go语言之进阶篇服务器如何知道用户需要什么资源

    1.服务器如何知道用户需要什么资源 示例: package main import ( "fmt" "net" ) func main() { //监听 lis ...

  9. Go语言之进阶篇Socket编程

    一.Socket编程 1.什么是Socket Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭clo ...

随机推荐

  1. yaml.parser.ParserError

    ERROR: yaml.parser.ParserError: while parsing a block mapping in "./docker-compose.yml", l ...

  2. android Service oncreate 在UI线程 何时用service,何时用thread

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 服务的生命周期 各个方法 都是在主线程中的. 这里的操作可以导致主线程阻塞. 这些方法, ...

  3. HDU 3802Ipad,IPhone

    前两块可以看成是不是二次剩余,快速幂计算即可. 后半部分可以看成x1=a+b+2ab,x2=a+b-2ab为特征方程x^2-px-qx=0的两根 然后可以通过韦达定理求出p和q,因此递推式为A(n+2 ...

  4. [BZOJ3585]mex(莫队+分块)

    显然可以离线主席树,这里用莫队+分块做.分块的一个重要思想是实现修改与查询时间复杂度的均衡,这里莫队和分块互相弥补. 考虑暴力的分块做法,首先显然大于n的数直接忽略,于是将值域分成sqrt(n)份,每 ...

  5. java集合之vector容器

    学完ArrayList和LinkedList之后,我们接着学习Vector.第1部分 Vector介绍第2部分 Vector数据结构第3部分 Vector源码解析(基于JDK1.6.0_45)第4部分 ...

  6. Consul + fabio 实现自动服务发现、负载均衡 - DockOne.io

    Consul + fabio 实现自动服务发现.负载均衡 - DockOne.io   http://dockone.io/article/1567

  7. Java中的锁(转)

    Java中的锁 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂.因为锁(以及其它更高级的线程同步机制)是由synchronized同步 ...

  8. android应用程序签名(转)

    概述 Android系统要求,所有的程序经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系.证书不是用于用户控制哪些程序可以安装.证书不需要授权中心来 ...

  9. linux socket talkclient talkserver示例

    cleint: #define _GNU_SOURCE 1 #include <sys/types.h> #include <sys/socket.h> #include &l ...

  10. [转]LRU缓存实现(Java)

    LRU Cache的LinkedHashMap实现 LRU Cache的链表+HashMap实现 LinkedHashMap的FIFO实现 调用示例 LRU是Least Recently Used 的 ...