这篇我接着实践zip,tar和xlsx文件的读写操作。简单介绍一下 tar吧:
tar 是一种打包格式,但不对文件进行压缩,所以打包后的文档一般远远大于 zip 和 tar.gz,因为不需要压缩的原因,所以打包的速度是非常快的,打包时 CPU 占用率也很低。
tar 的目的在于方便文件的管理,比如在我们的生活中,有很多小物品分散在房间的各个角落,为了方便整洁可以将这些零散的物品整理进一个箱子中,而 tar 的功能就类似这样。
创建 tar 归档文件与创建 .zip 归档文件非常类似,主要不同点在于我们将所有数据都写入相同的 writer 中,并且在写入文件的数据之前必须写入完整的头部,而非仅仅是一个文件名。
tar 打包实现原理如下:
创建一个文件 x.tar,然后向 x.tar 写入 tar 头部信息;
打开要被 tar 的文件,向 x.tar 写入头部信息,然后向 x.tar 写入文件信息;
当有多个文件需要被 tar 时,重复第二步直到所有文件都被写入到 x.tar 中;
关闭 x.tar,完成打包
demo:
package main
import (
"archive/tar"
"archive/zip"
"bytes"
"fmt"
"io"
"os"
"strings"
"github.com/tealeg/xlsx"
)
type Website struct {
Name string `xml:"name,attr"`
Content []string
}
var info []Website
func init() {
info = []Website{
{"Golang.txt", []string{"http://c.biancheng.net/cplus/", "http://c.biancheng.net/linux_tutorial/"}},
{"Java.txt", []string{"http://c.biancheng.net/socket/", "http://c.biancheng.net/python/"}},
}
/*
列举了一些常用的 flag 文件处理参数:
O_RDONLY:只读模式打开文件;
O_WRONLY:只写模式打开文件;
O_RDWR:读写模式打开文件;
O_A