package archive_tar
import (
"archive/tar"
"archive/zip"
"fmt"
"io"
"os"
)
type files struct {
name, content string
}
//寫測試
func TarWriteTest() {
//
files_ := [2]files{
{"a.txt", "hello world"},
{"b.txt", "你好,世界,有很多的文字,很多很多很多,超過了1k那麼多,你該怎麼辦"},
}
//
tarf, _ := os.Create("xxx.tar")
defer tarf.Close()
tarBufWr := tar.NewWriter(tarf)
//
for _, v := range files_ {
var hdr tar.Header
hdr.Name = v.name
hdr.Size = int64(len(v.content))
hdr.Mode = 0600
//寫檔案頭
tarBufWr.WriteHeader(&hdr)
//寫内容
tarBufWr.Write([]byte(v.content))
//
} //
tarBufWr.Close()
}
//讀測試
func TarReadTest() {
//
tarf, _ := os.Open("xxx.tar")
defer tarf.Close()
//
tarRd := tar.NewReader(tarf)
for {
hdr, err := tarRd.Next()
if err == io.EOF {
break
} //
fmt.Println(hdr.Size)
io.Copy(os.Stdout, tarRd)
}
}
//寫zip檔案
func ZipWrite() {
//構造檔案
sampfiles := [3]files{
{"a.txt", "hello world\r\n"},
{"b.txt", "你好,世界,有很多的文字,很多很多很多,超過了1k那麼多,你該怎麼辦\r\n"},
{"c.txt", "你好,世界,有很多的文字,很多很多很多,超過了1k那麼多,你該怎麼辦\r\n"},
}
//
f_, _ := os.Create("xxx.zip")
defer f_.Close()
//
zipWr := zip.NewWriter(f_)
//
for _, v := range sampfiles {
//寫檔案
zipf, _ := zipWr.Create(v.name)
zipf.Write([]byte(v.content))
}
//必須有
defer zipWr.Close()
}
//讀取zip檔案
func ZipRead() {
//
zipRd, _ := zip.OpenReader("xxx.zip")
//周遊檔案,擷取zip檔案内容
for _, v := range zipRd.File {
fmt.Println(v.FileHeader.Name)
f_, _ := v.Open()
io.Copy(os.Stdout, f_)
}
}
// func main() {
// tarReadTest()
// fmt.Println("end")
// }
package archive_tar
import (
"fmt"
"testing"
)
func TestTarReadTest(t *testing.T) {
TarReadTest()
}
func TestTarWriteTest(t *testing.T) {
fmt.Println("将會看到xxx.tar檔案")
TarWriteTest()
}
func TestZipRead(t *testing.T) {
ZipRead()
}
func TestZipWrite(t *testing.T) {
ZipWrite()
}