项目作者: mickep76

项目描述 :
Package provides a generic interface to compress and un-compress
高级语言: Go
项目地址: git://github.com/mickep76/compress.git
创建时间: 2018-09-17T15:56:26Z
项目社区:https://github.com/mickep76/compress

开源协议:Apache License 2.0

下载


GoDoc
Go Report Card
License
Build Status
codecov

compress

Package provides a generic interface to compress and un-compress

Example

  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "os"
  8. "strings"
  9. "github.com/ake-persson/compress"
  10. _ "github.com/ake-persson/compress/gzip"
  11. _ "github.com/ake-persson/compress/lzw"
  12. _ "github.com/ake-persson/compress/snappy"
  13. _ "github.com/ake-persson/compress/xz"
  14. _ "github.com/ake-persson/compress/zlib"
  15. )
  16. func usage() {
  17. fmt.Printf("Usage: example [options] file\n\nOptions:\n")
  18. flag.PrintDefaults()
  19. os.Exit(0)
  20. }
  21. func main() {
  22. out := flag.String("out", "example", "Output.")
  23. algo := flag.String("algo", "gzip", fmt.Sprintf("Algorithms: [%s].", strings.Join(compress.Algorithms(), ", ")))
  24. dec := flag.Bool("dec", false, "Decode.")
  25. flag.Parse()
  26. if len(flag.Args()) < 1 {
  27. usage()
  28. }
  29. file := flag.Args()[0]
  30. a, err := compress.NewAlgorithm(*algo)
  31. if err != nil {
  32. log.Fatal(err)
  33. }
  34. if *dec {
  35. encoded, err := ioutil.ReadFile(file)
  36. if err != nil {
  37. log.Fatal(err)
  38. }
  39. b, err := a.Decode(encoded)
  40. if err != nil {
  41. log.Fatal(err)
  42. }
  43. fmt.Print(string(b))
  44. } else {
  45. b, err := ioutil.ReadFile(file)
  46. if err != nil {
  47. log.Fatal(err)
  48. }
  49. encoded, err := a.Encode(b)
  50. if err != nil {
  51. log.Fatal(err)
  52. }
  53. if err := ioutil.WriteFile(*out+"."+*algo, encoded, 0644); err != nil {
  54. log.Fatal(err)
  55. }
  56. }
  57. }