ホームページ > バックエンド開発 > Golang > ルートフォルダーを含めずにGoでフォルダーコンテンツを圧縮するにはどうすればよいですか?

ルートフォルダーを含めずにGoでフォルダーコンテンツを圧縮するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-17 21:46:01
オリジナル
781 人が閲覧しました

How to Zip Folder Content in Go Without Including the Root Folder?

ルート フォルダーを除くフォルダーからのコンテンツの圧縮

Go では、ルート フォルダーを除外しながらディレクトリ内のコンテンツを圧縮するには、zip を使用します。 .Writer.

問題説明

元のコードは、ディレクトリ (「dir1」) の内容を「dir1.zip」に圧縮することを目的としています。ただし、解凍すると、zip ファイルはルートとして「dir1」フォルダー構造を保持します。目標は、抽出時にルート フォルダーを削除することです。

解決策

これを達成するには、zip.Writer 内の header.Name フィールドを変更する必要があります。このフィールドは、アーカイブ内のファイルの名前を決定します。元のコードでは、フィールドは次のように設定されています:

if baseDir != "" {
    header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}
ログイン後にコピー

このコードでは、ファイル名に、baseDir (「dir1」) とソース ディレクトリを基準としたファイルのパス (「path/dir1」) が含まれるようになります。 )。ただし、解凍後にルート フォルダーを削除するには、baseDir:

header.Name = strings.TrimPrefix(path, source)
ログイン後にコピー

を省略する必要があります。この変更により、zip ファイルはアーカイブのルート直下に配置され、" dir1" フォルダーを抽出時にルートとして使用します。

結果

baseDir を省略することによりheader.Name フィールドから、「dir1」ディレクトリの内容がルート フォルダーなしで「dir1.zip」に圧縮されます。これにより、ユーザーは「dir1」フォルダーを経由せずにファイルを直接抽出できます。

以上がルートフォルダーを含めずにGoでフォルダーコンテンツを圧縮するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート