Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ZipFileExtensions.cs
Go to the documentation of this file.
2
4
5[EditorBrowsable(EditorBrowsableState.Never)]
6public static class ZipFileExtensions
7{
8 public static ZipArchiveEntry CreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName)
9 {
10 return destination.DoCreateEntryFromFile(sourceFileName, entryName, null);
11 }
12
13 public static ZipArchiveEntry CreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName, CompressionLevel compressionLevel)
14 {
15 return destination.DoCreateEntryFromFile(sourceFileName, entryName, compressionLevel);
16 }
17
18 internal static ZipArchiveEntry DoCreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName, CompressionLevel? compressionLevel)
19 {
20 if (destination == null)
21 {
22 throw new ArgumentNullException("destination");
23 }
24 if (sourceFileName == null)
25 {
26 throw new ArgumentNullException("sourceFileName");
27 }
28 if (entryName == null)
29 {
30 throw new ArgumentNullException("entryName");
31 }
32 using FileStream fileStream = new FileStream(sourceFileName, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, useAsync: false);
33 ZipArchiveEntry zipArchiveEntry = (compressionLevel.HasValue ? destination.CreateEntry(entryName, compressionLevel.Value) : destination.CreateEntry(entryName));
34 DateTime dateTime = File.GetLastWriteTime(sourceFileName);
35 if (dateTime.Year < 1980 || dateTime.Year > 2107)
36 {
37 dateTime = new DateTime(1980, 1, 1, 0, 0, 0);
38 }
39 zipArchiveEntry.LastWriteTime = dateTime;
40 using (Stream destination2 = zipArchiveEntry.Open())
41 {
42 fileStream.CopyTo(destination2);
43 }
44 return zipArchiveEntry;
45 }
46
47 public static void ExtractToDirectory(this ZipArchive source, string destinationDirectoryName)
48 {
49 source.ExtractToDirectory(destinationDirectoryName, overwriteFiles: false);
50 }
51
52 public static void ExtractToDirectory(this ZipArchive source, string destinationDirectoryName, bool overwriteFiles)
53 {
54 if (source == null)
55 {
56 throw new ArgumentNullException("source");
57 }
58 if (destinationDirectoryName == null)
59 {
60 throw new ArgumentNullException("destinationDirectoryName");
61 }
62 foreach (ZipArchiveEntry entry in source.Entries)
63 {
64 entry.ExtractRelativeToDirectory(destinationDirectoryName, overwriteFiles);
65 }
66 }
67
68 public static void ExtractToFile(this ZipArchiveEntry source, string destinationFileName)
69 {
70 source.ExtractToFile(destinationFileName, overwrite: false);
71 }
72
73 public static void ExtractToFile(this ZipArchiveEntry source, string destinationFileName, bool overwrite)
74 {
75 if (source == null)
76 {
77 throw new ArgumentNullException("source");
78 }
79 if (destinationFileName == null)
80 {
81 throw new ArgumentNullException("destinationFileName");
82 }
83 FileMode mode = ((!overwrite) ? FileMode.CreateNew : FileMode.Create);
84 using (FileStream destination = new FileStream(destinationFileName, mode, FileAccess.Write, FileShare.None, 4096, useAsync: false))
85 {
86 using Stream stream = source.Open();
88 }
89 try
90 {
91 File.SetLastWriteTime(destinationFileName, source.LastWriteTime.DateTime);
92 }
94 {
95 }
96 }
97
98 internal static void ExtractRelativeToDirectory(this ZipArchiveEntry source, string destinationDirectoryName, bool overwrite)
99 {
100 if (source == null)
101 {
102 throw new ArgumentNullException("source");
103 }
104 if (destinationDirectoryName == null)
105 {
106 throw new ArgumentNullException("destinationDirectoryName");
107 }
108 DirectoryInfo directoryInfo = Directory.CreateDirectory(destinationDirectoryName);
109 string text = directoryInfo.FullName;
110 if (!text.EndsWith(Path.DirectorySeparatorChar))
111 {
113 }
114 string fullPath = Path.GetFullPath(Path.Combine(text, source.FullName));
115 if (!fullPath.StartsWith(text, System.IO.PathInternal.StringComparison))
116 {
118 }
119 if (Path.GetFileName(fullPath).Length == 0)
120 {
121 if (source.Length != 0L)
122 {
124 }
125 Directory.CreateDirectory(fullPath);
126 }
127 else
128 {
130 source.ExtractToFile(fullPath, overwrite);
131 }
132 }
133}
static void ExtractToDirectory(this ZipArchive source, string destinationDirectoryName, bool overwriteFiles)
static ZipArchiveEntry DoCreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName, CompressionLevel? compressionLevel)
static void ExtractToDirectory(this ZipArchive source, string destinationDirectoryName)
static ZipArchiveEntry CreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName)
static void ExtractToFile(this ZipArchiveEntry source, string destinationFileName)
static ZipArchiveEntry CreateEntryFromFile(this ZipArchive destination, string sourceFileName, string entryName, CompressionLevel compressionLevel)
static void ExtractToFile(this ZipArchiveEntry source, string destinationFileName, bool overwrite)
static void ExtractRelativeToDirectory(this ZipArchiveEntry source, string destinationDirectoryName, bool overwrite)
static DirectoryInfo CreateDirectory(string path)
Definition Directory.cs:28
static void SetLastWriteTime(string path, DateTime lastWriteTime)
Definition File.cs:200
static DateTime GetLastWriteTime(string path)
Definition File.cs:212
static StringComparison StringComparison
static string Combine(string path1, string path2)
Definition Path.cs:304
static ? string GetFileName(string? path)
Definition Path.cs:200
static string GetFullPath(string path)
Definition Path.cs:881
static readonly char DirectorySeparatorChar
Definition Path.cs:71
static ? string GetDirectoryName(string? path)
Definition Path.cs:121
void CopyTo(Stream destination)
Definition Stream.cs:540
static string IO_ExtractingResultsInOutside
Definition SR.cs:16
static string IO_DirectoryNameWithData
Definition SR.cs:14
Definition SR.cs:7