每天學習一點go src。
今天學習了zip包的簡單使用,實現了含目錄的壓縮與解壓。
寫了兩個方法,實現了壓縮、解壓。
package ziptestimport (
"archive/zip"
"io"
"os"
"strings"
)//壓縮檔案
//files 檔案陣列,可以是不同dir下的檔案或者資料夾
//dest 壓縮檔案存放位址
func compress(files *os.file, dest string) error
} return nil
}func compress(file *os.file, prefix string, zw *zip.writer) error
if info.isdir()
for _, fi := range fileinfos
err = compress(f, prefix, zw)
if err != nil
} } else
writer, err := zw.createheader(header)
if err != nil
_, err = io.copy(writer, file)
file.close()
if err != nil
} return nil
}//解壓
func decompress(zipfile, dest string) error
defer reader.close()
for _, file := range reader.file
defer rc.close()
filename := dest + file.name
err = os.mkdirall(getdir(filename), 0755)
if err != nil
w, err := os.create(filename)
if err != nil
defer w.close()
_, err = io.copy(w, rc)
if err != nil
w.close()
rc.close()
} return nil
}func getdir(path string) string
func substring(str string, start, end int) string
if end < start || end > length
return string(rs[start:end])
}
測試**:
package ziptestimport (
"os"
"testing"
)func testcompress(t *testing.t)
defer f1.close()
f2, err := os.open("/home/zzw/test_data/ziptest/readme.notzip")
if err != nil
defer f2.close()
f3, err := os.open("/home/zzw/test_data")
if err != nil
defer f3.close()
var files = *os.file
dest := "/home/zzw/test_data/test.zip"
err = compress(files, dest)
if err != nil
}func testdecompress(t *testing.t)
}
linux刪除目,linux壓縮,解壓
linux刪除目錄很簡單,很多人還是習慣用rmdir,不過一旦目錄非空,就陷入深深的苦惱之中,現在使用rm rf命令即可。直接rm就可以了,不過要加兩個引數 rf 即 rm rf 目錄名字 r 就是向下遞迴,不管有多少級目錄,一併刪除 f 就是直接強行刪除,不作任何提示的意思 1 刪除資料夾例項 將...
壓縮解壓縮
壓縮 壓縮後的檔名 包含物理路徑 待壓縮的資料夾 包含物理路徑 public static void packfiles string filename,string directory catch exception 解壓縮 待解壓檔名 包含物理路徑 解壓到哪個目錄中 包含物理路徑 public ...
壓縮 解壓縮
linux使用最廣泛的壓縮格式位gz,使用gzip命令進行壓縮和解壓縮 1 gzip,gunzip,壓縮 解壓縮檔案,compress or expand files gzip acdfhkllnnrtvv19 s suffix name gunzip acfhkllnnrtvv s suffix ...