Index: src/pkg/archive/tar/example_test.go |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/src/pkg/archive/tar/example_test.go |
@@ -0,0 +1,75 @@ |
+package tar_test |
mikio
2013/02/04 03:26:25
copyright?
|
+ |
+import ( |
+ "archive/tar" |
+ "bytes" |
+ "fmt" |
+ "io" |
+ "log" |
+ "os" |
+) |
+ |
+func Example() { |
+ // Create a buffer to write our archive to. |
+ buf := new(bytes.Buffer) |
+ |
+ // Create a new tar archive. |
+ tw := tar.NewWriter(buf) |
+ |
+ // Add some files to the archive. |
+ var files = []struct { |
+ Name, Body string |
+ }{ |
+ {"readme.txt", "This archive contains some text files."}, |
+ {"gopher.txt", "Gopher names:\nGeorge\nGeoffrey\nGonzo"}, |
+ {"todo.txt", "Get animal handling licence."}, |
+ } |
+ for _, file := range files { |
+ hdr := &tar.Header{ |
+ Name: file.Name, |
+ Size: int64(len(file.Body)), |
+ } |
+ if err := tw.WriteHeader(hdr); err != nil { |
+ log.Fatalln(err) |
+ } |
+ if _, err := tw.Write([]byte(file.Body)); err != nil { |
+ log.Fatalln(err) |
+ } |
+ } |
+ // Make sure to check the error on Close. |
+ if err := tw.Close(); err != nil { |
+ log.Fatalln(err) |
+ } |
+ |
+ // Open the tar archive for reading. |
+ r := bytes.NewReader(buf.Bytes()) |
+ tr := tar.NewReader(r) |
+ |
+ // Iterate through the files in the archive. |
+ for { |
+ hdr, err := tr.Next() |
+ if err == io.EOF { |
+ // end of tar archive |
+ break |
+ } |
+ if err != nil { |
+ log.Fatalln(err) |
+ } |
+ fmt.Printf("Contents of %s:\n", hdr.Name) |
+ if _, err := io.Copy(os.Stdout, tr); err != nil { |
+ log.Fatalln(err) |
+ } |
+ fmt.Println() |
+ } |
+ |
+ // Output: |
+ // Contents of readme.txt: |
+ // This archive contains some text files. |
+ // Contents of gopher.txt: |
+ // Gopher names: |
+ // George |
+ // Geoffrey |
+ // Gonzo |
+ // Contents of todo.txt: |
+ // Get animal handling licence. |
+} |