Go语言文件操作应用

幸运草
幸运草
幸运草
942
文章
3
评论
2020年4月16日20:53:06 评论 221

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("xEFxBBxBF") // 写入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)
}

特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
Go语言接口规则 前端框架

Go语言接口规则

Go语言接口规则 接口是一个或多个方法签名的集合。任何类型的方法集中只要拥有该接口对应的全部方法签名。就表示它 "实现" 了该接口,无须在该类型上显式声明实现了哪个接口。对应方法,是指有相同名称、参数...
Go语言中处理 HTTP 服务器 前端框架

Go语言中处理 HTTP 服务器

1 概述 包 net/http 提供了HTTP服务器端和客户端的实现。本文说明关于服务器端的部分。 快速开始: package main import (   "log"   "net/http" )...