Files
sharpcompress/SharpCompress/Archive/IArchiveEntry.Extensions.cs

61 lines
2.1 KiB
C#
Raw Permalink Normal View History

2013-04-07 10:58:58 +01:00
using System.IO;
using SharpCompress.Common;
2013-04-28 12:32:55 +01:00
2013-04-07 10:58:58 +01:00
namespace SharpCompress.Archive
{
public static class IArchiveEntryExtensions
{
2013-04-28 13:01:29 +01:00
#if !PORTABLE && !NETFX_CORE
2013-04-07 10:58:58 +01:00
/// <summary>
/// Extract to specific directory, retaining filename
/// </summary>
public static void WriteToDirectory(this IArchiveEntry entry, string destinationDirectory,
2013-04-28 12:32:55 +01:00
ExtractOptions options = ExtractOptions.Overwrite)
2013-04-07 10:58:58 +01:00
{
string destinationFileName = string.Empty;
string file = Path.GetFileName(entry.FilePath);
if (options.HasFlag(ExtractOptions.ExtractFullPath))
{
string folder = Path.GetDirectoryName(entry.FilePath);
string destdir = Path.Combine(destinationDirectory, folder);
if (!Directory.Exists(destdir))
{
Directory.CreateDirectory(destdir);
}
destinationFileName = Path.Combine(destdir, file);
}
else
{
destinationFileName = Path.Combine(destinationDirectory, file);
}
entry.WriteToFile(destinationFileName, options);
}
/// <summary>
/// Extract to specific file
/// </summary>
public static void WriteToFile(this IArchiveEntry entry, string destinationFileName,
2013-04-28 12:32:55 +01:00
ExtractOptions options = ExtractOptions.Overwrite)
2013-04-07 10:58:58 +01:00
{
if (entry.IsDirectory)
{
return;
}
FileMode fm = FileMode.Create;
if (!options.HasFlag(ExtractOptions.Overwrite))
{
fm = FileMode.CreateNew;
}
using (FileStream fs = File.Open(destinationFileName, fm))
// using (Stream entryStream = entry.OpenEntryStream())
{
//entryStream.TransferTo(fs);
2013-04-28 12:32:55 +01:00
entry.WriteTo(fs);
2013-04-07 10:58:58 +01:00
}
}
#endif
}
2013-04-28 12:32:55 +01:00
}