老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Go语言文件操作应用之实战案例!老男孩Golang培训班

老男孩IT教育

常见问题

2022年2月8日 18:08

本篇文章通过实战案例为大家讲解一下Go语言文件操作的相关内容,具有一定参考借鉴价值,需要的朋友们可以详细了解一下,希望对你们有用。

  本篇文章通过实战案例为大家讲解一下Go语言文件操作的相关内容,具有一定参考借鉴价值,需要的朋友们可以详细了解一下,希望对你们有用。

Go语言培训

  一、从一个文件拷贝到另一个文件。

package main

import (
    "fmt"
    "io"
    "os"
)

func CopyFile(dstName, srcName string) (writeen int64, err error) {
    src, err := os.Open(dstName)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer src.Close()

    dst, err := os.OpenFile(srcName, os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer dst.Close()

    return io.Copy(dst, src)
}

func main() {
    CopyFile("./oldboy/golang.go", "./oldboy/golang_copy.go")
    fmt.Println("copy done.")
}

  二、写入内容到Excel。

  使用encoding/csv包实现写入内容到Excel。

  csv读写逗号分隔值(csv)的文件。

  一个csv分拣包含零到多条记录,每条记录一到多个字段。每个记录用换行符分隔。最后一条记录后面可以有换行符,也可以没有。

  写入内容到Excel常用函数和方法:

func NewWriter(w io.Writer) *Writer

  NewWriter返回一个写入w的*Writer。

func (w *Writer) Write(record []string) (err error)

  向w中写入一条记录,会自行添加必需的引号。记录是字符串切片,每个字符串代表一个字段。

func (w *Writer) Flush()

  将缓存中的数据写入底层的io.Writer。要检查Flush时是否发生错误的话,应调用Error方法。

func (w *Writer) WriteAll(records [][]string) (err error)

  WriteAll方法使用Write方法向w写入多条记录,并在最后调用Flush方法清空缓存。

  代码实现:

package main

import (
    "encoding/csv"
    "math/rand"
    "os"
    "strconv"
)

func main() {
    file, err := os.Create("./oldboy.xls")
    if err != nil {
        panic(err)
    }
    defer func(file *os.File) { file.Close() }(file)

    file.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM

    w := csv.NewWriter(file)
    w.Write([]string{"编号", "姓名", "年龄"})
    for i := 1; i < 11; i++ {
        num := strconv.FormatInt(int64(i), 10)
        age := strconv.FormatInt(int64(rand.Intn(100)), 10)
        w.Write([]string{num, "name" + num, age})
    }

    w.Flush()

    records := [][]string{}
    for i := 11; i < 21; i++ {
        num := strconv.FormatInt(int64(i), 10)
        age := strconv.FormatInt(int64(rand.Intn(100)), 10)
        str := []string{num, "name" + num, age}
        records = append(records, str)
    }
    w.WriteAll(records)
}

  想要学习Go语言,在这里推荐老男孩教育,我们的GO语言课程学习周期为4-6个月,班型有周末班、网络班,学员可以根据自己的实际情况选择适合的班型。

  推荐阅读:

  【Go语言培训】日常开发中,可以使用哪些Go第三方库和工具?

  Go语言中如何进行文件读取?老男孩Go语言培训课程

  Go语言中文件写入常用函数和方法!老男孩Go语言培训班

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。