ルート フォルダーを除くフォルダーからのコンテンツの圧縮
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 サイトの他の関連記事を参照してください。