TryOpen API #340

Open
opened 2026-01-29 22:10:25 +00:00 by claunia · 0 comments
Owner

Originally created by @AlexeiScherbakov on GitHub (Jan 2, 2019).

API tries open Archive, and return IArchive + true,when file is archive, false when file is not archive.
Exceptions are not thrown. Via ArchiveTypeMask user can set needed archive types (for example exclude Tar if it is not needed).

Add TryOpen to ArchiveFactory

static bool ArchiveFactory.TryOpen(Stream stream, ReaderOptions readerOptions,ArchiveTypeMask archiveTypes, out IArchive archive);
static bool ArchiveFactory.TryOpen(string filePath, ReaderOptions options, ArchiveTypeMask archiveTypes, out IArchive archive);
static bool ArchiveFactory.TryOpen(FileInfo fileInfo, ReaderOptions options,ArchiveTypeMask archiveTypes,out IArchive archive);

Add TryOpen to ReaderFactory
static bool ReaderFactory.TryOpen(Stream stream, ReaderOptions options,ArchiveTypeMask archiveTypes, out IReader reader)

Add ArchiveTypeMask

    [Flags]
    public enum ArchiveTypeMask
    {
        None = 0,
        Rar = 1,
        Zip = 1 << 1,
        Tar = 1 << 2,
        SevenZip = 1 << 3,
        GZip = 1 << 4,
        BZip2 = 1 << 5,
        LZip = 1 << 6,

        AllExceptTar = Rar | Zip | SevenZip | GZip | BZip2 | LZip,
        All = AllExceptTar | Tar
    }
Originally created by @AlexeiScherbakov on GitHub (Jan 2, 2019). API tries open Archive, and return IArchive + true,when file is archive, false when file is not archive. Exceptions are not thrown. Via ArchiveTypeMask user can set needed archive types (for example exclude Tar if it is not needed). Add TryOpen to ArchiveFactory ``` static bool ArchiveFactory.TryOpen(Stream stream, ReaderOptions readerOptions,ArchiveTypeMask archiveTypes, out IArchive archive); static bool ArchiveFactory.TryOpen(string filePath, ReaderOptions options, ArchiveTypeMask archiveTypes, out IArchive archive); static bool ArchiveFactory.TryOpen(FileInfo fileInfo, ReaderOptions options,ArchiveTypeMask archiveTypes,out IArchive archive); ``` Add TryOpen to ReaderFactory `static bool ReaderFactory.TryOpen(Stream stream, ReaderOptions options,ArchiveTypeMask archiveTypes, out IReader reader)` Add ArchiveTypeMask ``` [Flags] public enum ArchiveTypeMask { None = 0, Rar = 1, Zip = 1 << 1, Tar = 1 << 2, SevenZip = 1 << 3, GZip = 1 << 4, BZip2 = 1 << 5, LZip = 1 << 6, AllExceptTar = Rar | Zip | SevenZip | GZip | BZip2 | LZip, All = AllExceptTar | Tar } ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/sharpcompress#340