【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文件
74 0
|
1月前
|
安全 Go
Go语言并发新特性:单向通道的读写控制
Go语言并发新特性:单向通道的读写控制
48 0
|
7月前
|
Go 区块链
go 编译 自定义 图标 ico文件
go 编译 自定义 图标 ico文件
47 0
|
1月前
|
安全 Go
Golang深入浅出之-Go语言标准库中的文件读写:io/ioutil包
【4月更文挑战第27天】Go语言的`io/ioutil`包提供简单文件读写,适合小文件操作。本文聚焦`ReadFile`和`WriteFile`函数,讨论错误处理、文件权限、大文件处理和编码问题。避免错误的关键在于检查错误、设置合适权限、采用流式读写及处理编码。遵循这些最佳实践能提升代码稳定性。
25 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
134 0
|
1月前
|
JSON 缓存 JavaScript
Go语言依赖管理的核心 - go.mod文件解析
Go语言依赖管理的核心 - go.mod文件解析
120 0
|
1月前
|
安全 数据挖掘 测试技术
深入研究:Go语言文件写入的性能差异
深入研究:Go语言文件写入的性能差异
90 0
|
1月前
|
XML Go 数据格式
Go如何自动解压缩包?如何读取docx/doc文件内容?
在开发过程中,我们常常需要处理压缩包和文档文件。本文将介绍如何使用Go语言自动解压缩包和读取docx/doc文件。
|
8月前
|
Go C++ Python
运行第一个Go文件
​# Go学习(1) ## 前言 Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具Python等动态语言的开发速度和C/C++等编译型语言的性能与安全性”。 Go语言近些年来比较热火,饶有兴趣的开始接触了解,配置环境,编写运行第一个程序。 ## 一、创建项目 注:本文用的GoLand版本为官网最新版 Version: 2021.2.2 (地址为 [GoLand官网](https://www.jetbrains.com/go/download/#section=windows "GoLand官网")),用
29 0