mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-23 23:45:14 +00:00
same for writers
This commit is contained in:
58
src/SharpCompress/Writers/GZip/GZipWriter.Factory.cs
Normal file
58
src/SharpCompress/Writers/GZip/GZipWriter.Factory.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
#if NET8_0_OR_GREATER
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using SharpCompress.Common;
|
||||
|
||||
namespace SharpCompress.Writers.GZip;
|
||||
|
||||
public partial class GZipWriter : IWriterOpenable<GZipWriterOptions>
|
||||
{
|
||||
public static IWriter Open(string filePath, GZipWriterOptions writerOptions)
|
||||
{
|
||||
filePath.NotNullOrEmpty(nameof(filePath));
|
||||
return Open(new FileInfo(filePath), writerOptions);
|
||||
}
|
||||
|
||||
public static IWriter Open(FileInfo fileInfo, GZipWriterOptions writerOptions)
|
||||
{
|
||||
fileInfo.NotNull(nameof(fileInfo));
|
||||
return new GZipWriter(fileInfo.OpenWrite(), writerOptions);
|
||||
}
|
||||
|
||||
public static IWriter Open(Stream stream, GZipWriterOptions writerOptions)
|
||||
{
|
||||
stream.NotNull(nameof(stream));
|
||||
return new GZipWriter(stream, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
string path,
|
||||
GZipWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(path, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
Stream stream,
|
||||
GZipWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(stream, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
FileInfo fileInfo,
|
||||
GZipWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(fileInfo, writerOptions);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -7,7 +7,7 @@ using SharpCompress.IO;
|
||||
|
||||
namespace SharpCompress.Writers.GZip;
|
||||
|
||||
public sealed class GZipWriter : AbstractWriter
|
||||
public sealed partial class GZipWriter : AbstractWriter
|
||||
{
|
||||
private bool _wroteToStream;
|
||||
|
||||
|
||||
@@ -1,6 +1,35 @@
|
||||
#if NET8_0_OR_GREATER
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
|
||||
namespace SharpCompress.Writers;
|
||||
|
||||
public class IWriterOpenable
|
||||
public interface IWriterOpenable<TWriterOptions>
|
||||
where TWriterOptions : WriterOptions
|
||||
{
|
||||
|
||||
public static abstract IWriter Open(string filePath, TWriterOptions writerOptions);
|
||||
|
||||
public static abstract IWriter Open(FileInfo fileInfo, TWriterOptions writerOptions);
|
||||
public static abstract IWriter Open(Stream stream, TWriterOptions writerOptions);
|
||||
|
||||
/// <summary>
|
||||
/// Opens a Writer asynchronously.
|
||||
/// </summary>
|
||||
/// <param name="stream">The stream to write to.</param>
|
||||
/// <param name="archiveType">The archive type.</param>
|
||||
/// <param name="writerOptions">Writer options.</param>
|
||||
/// <param name="cancellationToken">Cancellation token.</param>
|
||||
/// <returns>A task that returns an IWriter.</returns>
|
||||
public static abstract IAsyncWriter OpenAsync(
|
||||
Stream stream,
|
||||
TWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
);
|
||||
|
||||
public static abstract IAsyncWriter OpenAsync(string filePath, TWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default);
|
||||
|
||||
public static abstract IAsyncWriter OpenAsync(FileInfo fileInfo, TWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default);
|
||||
}
|
||||
#endif
|
||||
|
||||
58
src/SharpCompress/Writers/Tar/TarWriter.Factory.cs
Normal file
58
src/SharpCompress/Writers/Tar/TarWriter.Factory.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
#if NET8_0_OR_GREATER
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using SharpCompress.Common;
|
||||
|
||||
namespace SharpCompress.Writers.Tar;
|
||||
|
||||
public partial class TarWriter : IWriterOpenable<TarWriterOptions>
|
||||
{
|
||||
public static IWriter Open(string filePath, TarWriterOptions writerOptions)
|
||||
{
|
||||
filePath.NotNullOrEmpty(nameof(filePath));
|
||||
return Open(new FileInfo(filePath), writerOptions);
|
||||
}
|
||||
|
||||
public static IWriter Open(FileInfo fileInfo, TarWriterOptions writerOptions)
|
||||
{
|
||||
fileInfo.NotNull(nameof(fileInfo));
|
||||
return new TarWriter(fileInfo.OpenWrite(), writerOptions);
|
||||
}
|
||||
|
||||
public static IWriter Open(Stream stream, TarWriterOptions writerOptions)
|
||||
{
|
||||
stream.NotNull(nameof(stream));
|
||||
return new TarWriter(stream, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
string path,
|
||||
TarWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(path, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
Stream stream,
|
||||
TarWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(stream, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
FileInfo fileInfo,
|
||||
TarWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(fileInfo, writerOptions);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -12,7 +12,7 @@ using SharpCompress.IO;
|
||||
|
||||
namespace SharpCompress.Writers.Tar;
|
||||
|
||||
public class TarWriter : AbstractWriter
|
||||
public partial class TarWriter : AbstractWriter
|
||||
{
|
||||
private readonly bool finalizeArchiveOnClose;
|
||||
private TarHeaderWriteFormat headerFormat;
|
||||
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using SharpCompress.Common;
|
||||
|
||||
namespace SharpCompress.Writers;
|
||||
|
||||
58
src/SharpCompress/Writers/Zip/ZipWriter.Factory.cs
Normal file
58
src/SharpCompress/Writers/Zip/ZipWriter.Factory.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
#if NET8_0_OR_GREATER
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using SharpCompress.Common;
|
||||
|
||||
namespace SharpCompress.Writers.Zip;
|
||||
|
||||
public partial class ZipWriter : IWriterOpenable<ZipWriterOptions>
|
||||
{
|
||||
public static IWriter Open(string filePath, ZipWriterOptions writerOptions)
|
||||
{
|
||||
filePath.NotNullOrEmpty(nameof(filePath));
|
||||
return Open(new FileInfo(filePath), writerOptions);
|
||||
}
|
||||
|
||||
public static IWriter Open(FileInfo fileInfo, ZipWriterOptions writerOptions)
|
||||
{
|
||||
fileInfo.NotNull(nameof(fileInfo));
|
||||
return new ZipWriter(fileInfo.OpenWrite(), writerOptions);
|
||||
}
|
||||
|
||||
public static IWriter Open(Stream stream, ZipWriterOptions writerOptions)
|
||||
{
|
||||
stream.NotNull(nameof(stream));
|
||||
return new ZipWriter(stream, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
string path,
|
||||
ZipWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(path, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
Stream stream,
|
||||
ZipWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(stream, writerOptions);
|
||||
}
|
||||
|
||||
public static IAsyncWriter OpenAsync(
|
||||
FileInfo fileInfo,
|
||||
ZipWriterOptions writerOptions,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
return (IAsyncWriter)Open(fileInfo, writerOptions);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -18,7 +18,7 @@ using SharpCompress.IO;
|
||||
|
||||
namespace SharpCompress.Writers.Zip;
|
||||
|
||||
public class ZipWriter : AbstractWriter
|
||||
public partial class ZipWriter : AbstractWriter
|
||||
{
|
||||
private readonly CompressionType compressionType;
|
||||
private readonly int compressionLevel;
|
||||
|
||||
Reference in New Issue
Block a user