問題: フォルダー内でファイルを圧縮すると、ルート フォルダーを含む構造が抽出される一方、望ましい結果は、ルート フォルダーなしでファイルを抽出することです。
コード試行:
次のコードは、ディレクトリ構造を圧縮しようとする試みです:
func Zipit(source, target string) error { zipfile, err := os.Create(target) ... header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source)) ... }
トラブルシューティング:
提供されたコード内、問題は、baseDir が header.Name に追加される行にあります。抽出された構造からルート フォルダーを除外するには、ファイル名から BaseDir を削除します。
解決策:
次の行を置き換えます:
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
with:
header.Name = strings.TrimPrefix(path, source)
代替アプローチ:
ヘッダー名を手動で変更する代わりに、次の代替アプローチを使用して抽出中にルート フォルダーを除外することもできます:
walker := filepath.Walk(source, func(path string, info os.FileInfo, err error) error { // Ignore the root directory if info.IsDir() && path == source { return filepath.SkipDir } ... })
以上がアーカイブにルートフォルダーを含めずにフォルダー内のファイルを圧縮するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。