【GO】文件读写:文件拷贝

简介: 【GO】文件读写:文件拷贝

咔咔博客之文件拷贝

拷贝会有几种方式,下面咱们一一讲解。

最简单的拷贝ioutil方式

当我们看到ioutil这个方法时就直接反应出来这个是最简单的方式。小的文件可以这样使用,但是大的问文件还是不要用这种方式来处理了

image.png

/**
最简单的copy案例
*/
func main() {
  bytes, _ := ioutil.ReadFile("d:/kaka.txt")
  err := ioutil.WriteFile("d:/kakas.txt", []byte(bytes), 0666)
  if err != nil {
    fmt.Println("拷贝失败")
  } else {
    fmt.Println("拷贝成功")
  }
}

屏幕快照 2022-05-18 下午8.33.20.png

func main6() {
  // 原文件 读取文件需要读的权限
  srcfile, _ := os.OpenFile("d:/kaka.txt", os.O_RDONLY, 0666)
  // 目标文件  需要写和创建权限
  disfile, _ := os.OpenFile("d:/kaka123.txt", os.O_WRONLY|os.O_CREATE, 0666)
  // 挂起文件,结束时关闭文件
  defer func() {
    srcfile.Close()
    disfile.Close()
  }()
  // 拷贝成功,返回成功的字节数
  written, err := io.Copy(disfile, srcfile)
  if err == nil {
    // 文件拷贝成功,字节数: 72
    fmt.Println("文件拷贝成功,字节数:", written)
  } else {
    fmt.Println("文件拷贝失败")
  }
}

案例三使用缓存的方式

这个代码暂时实现不了,现在还没有发现问题,后边解决

func main() {
  // 打开原始文件
  srcFile, _ := os.OpenFile("d:/kaka.txt", os.O_RDONLY, 0666)
  // 打开目标文件
  disFile, _ := os.OpenFile("d:/kakas.txt", os.O_CREATE|os.O_WRONLY, 0666)
  // 创建一个4字节的缓冲区
  buffer := make([]byte, 4)
  reader := bufio.NewReader(srcFile)
  writer := bufio.NewWriter(disFile)
  for {
    // 使用缓存区来读取数据
    n, err := reader.Read(buffer)
    fmt.Println(n, err)
    return
    // 将缓冲区的数据读出到目标文件
    writer.Write(buffer)
    // 读到文件末尾,清空最后一组数据,退出循环
    if err == io.EOF {
      writer.Flush()
      break
    }
  }
  fmt.Println("拷贝完成")
}

image.png

相关文章
|
1月前
|
Go API
一文搞懂Go读写Excel文件
一文搞懂Go读写Excel文件
83 0
|
1月前
|
安全 Go
Go语言并发新特性:单向通道的读写控制
Go语言并发新特性:单向通道的读写控制
50 0
|
7天前
|
监控 Go
go语言并发实战——日志收集系统(十) 重构tailfile模块实现同时监控多个日志文件
go语言并发实战——日志收集系统(十) 重构tailfile模块实现同时监控多个日志文件
|
7天前
|
存储 监控 算法
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
go语言并发实战——日志收集系统(四) 利用tail包实现对日志文件的实时监控
|
7天前
|
Go
Go语言进阶篇——文件
Go语言进阶篇——文件
|
1月前
|
安全 Go
Golang深入浅出之-Go语言标准库中的文件读写:io/ioutil包
【4月更文挑战第27天】Go语言的`io/ioutil`包提供简单文件读写,适合小文件操作。本文聚焦`ReadFile`和`WriteFile`函数,讨论错误处理、文件权限、大文件处理和编码问题。避免错误的关键在于检查错误、设置合适权限、采用流式读写及处理编码。遵循这些最佳实践能提升代码稳定性。
29 0
|
1月前
|
存储 测试技术 Go
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
掌握Go语言:深入探究Go语言中的命令源码文件与参数处理技巧(3)
|
1月前
|
Shell Go
go 编辑yaml 文件
在Go语言中编辑YAML文件通常涉及以下步骤: 1. 读取YAML文件内容到字符串。 2. 使用YAML解析库(如`gopkg.in/yaml.v2`)将字符串解析为Go数据结构(如`map[string]interface{}`或自定义的结构体)。 3. 修改数据结构中的值以更新YAML内容。 4. 将修改后的数据结构编码回YAML格式的字符串。 5. 将字符串写回到YAML文件。 以下是一个简单的例子,展示了如何使用`gopkg.in/yaml.v2`库来编辑YAML文件: 首先,确保你已经安装了`gopkg.in/yaml.v2`包: ```bash go get gopkg.i
155 0
|
1月前
|
JSON 缓存 JavaScript
Go语言依赖管理的核心 - go.mod文件解析
Go语言依赖管理的核心 - go.mod文件解析
128 0
|
1月前
|
安全 数据挖掘 测试技术
深入研究:Go语言文件写入的性能差异
深入研究:Go语言文件写入的性能差异
97 0