mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-02-03 21:23:38 +00:00
[PR #989] [MERGED] Add support for empty directory entries in archives #1409
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/adamhathcock/sharpcompress/pull/989
Author: @Copilot
Created: 10/28/2025
Status: ✅ Merged
Merged: 10/28/2025
Merged by: @adamhathcock
Base:
master← Head:copilot/add-support-empty-directories📝 Commits (8)
fda1c2cInitial pland148f36Add support for empty directory entries in archives084f81fFormat code with CSharpiera93a3f0Address code review feedback - fix formattingc8e4915Final progress reporte88841bAdd support for empty directory entries in archivesb4352feFix code formatting per CSharpier standardsb799f47Merge branch 'master' into copilot/add-support-empty-directories📊 Changes
19 files changed (+880 additions, -39 deletions)
View changed files
📝
src/SharpCompress/Archives/AbstractWritableArchive.cs(+21 -0)📝
src/SharpCompress/Archives/GZip/GZipArchive.cs(+5 -0)📝
src/SharpCompress/Archives/IWritableArchive.cs(+2 -0)📝
src/SharpCompress/Archives/Tar/TarArchive.cs(+47 -19)📝
src/SharpCompress/Archives/Tar/TarWritableArchiveEntry.cs(+25 -4)📝
src/SharpCompress/Archives/Zip/ZipArchive.cs(+44 -12)📝
src/SharpCompress/Archives/Zip/ZipWritableArchiveEntry.cs(+25 -4)📝
src/SharpCompress/Writers/AbstractWriter.cs(+14 -0)📝
src/SharpCompress/Writers/GZip/GZipWriter.cs(+3 -0)📝
src/SharpCompress/Writers/IWriter.cs(+6 -0)📝
src/SharpCompress/Writers/IWriterExtensions.cs(+9 -0)📝
src/SharpCompress/Writers/Tar/TarWriter.cs(+38 -0)📝
src/SharpCompress/Writers/Zip/ZipWriter.cs(+69 -0)➕
tests/SharpCompress.Test/GZip/GZipArchiveDirectoryTests.cs(+19 -0)➕
tests/SharpCompress.Test/GZip/GZipWriterDirectoryTests.cs(+19 -0)➕
tests/SharpCompress.Test/Tar/TarArchiveDirectoryTests.cs(+112 -0)➕
tests/SharpCompress.Test/Tar/TarWriterDirectoryTests.cs(+164 -0)➕
tests/SharpCompress.Test/Zip/ZipArchiveDirectoryTests.cs(+112 -0)➕
tests/SharpCompress.Test/Zip/ZipWriterDirectoryTests.cs(+146 -0)📄 Description
Add support for empty directory entries in archives
Summary
Successfully implemented support for adding empty directory entries to archives, addressing the feature request in issue #831.
Completed Tasks
WriteDirectorymethods toIWriterinterface for adding empty directory entriesWriteDirectoryinTarWriter(using EntryType.Directory)WriteDirectoryinZipWriter(using trailing '/' with zero size)GZipWriter(throw NotSupportedException as GZip doesn't support directories)AddDirectoryEntrymethods toIWritableArchiveinterfaceImplementation Details
Public API Additions:
IWriter.WriteDirectory(string directoryName, DateTime? modificationTime)- synchronousIWriter.WriteDirectoryAsync(string directoryName, DateTime? modificationTime, CancellationToken)- asynchronousIWritableArchive.AddDirectoryEntry(string key, DateTime? modified)- add directory to archiveFormat-Specific Behavior:
EntryType.Directorywith size 0, directories end with '/'ZipCompressionMethod.NoneNotSupportedException(format limitation)Backward Compatibility:
All existing functionality preserved. Changes are additive only.
Testing
Usage Example
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.