diff --git a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel.md b/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel.md new file mode 100644 index 00000000000..d89c9f86da4 --- /dev/null +++ b/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel.md @@ -0,0 +1,8 @@ +This constructor overload uses the compression mode . To set the compression mode to another value, use the or overload. + +## Examples + +The following example shows how to set the compression level when creating a object and how to leave the stream open. + +:::code language="csharp" source="~/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionLevelExample.cs" id="Snippet1"::: +:::code language="vb" source="~/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionLevelExample.vb" id="Snippet1"::: diff --git a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel_Boolean.md b/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel_Boolean.md deleted file mode 100644 index 1481981a933..00000000000 --- a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel_Boolean.md +++ /dev/null @@ -1,10 +0,0 @@ -You use this constructor when you want to specify whether compression efficiency or speed is more important for an instance of the class, and whether to leave the stream object open after disposing the object. - -This constructor overload uses the compression mode . To set the compression mode to another value, use the or overload. - -## Examples - -The following example shows how to set the compression level when creating a object and how to leave the stream open. - -:::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program2.cs" id="Snippet2"::: -:::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program2.vb" id="Snippet2"::: diff --git a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode.md b/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode.md index efbd304e740..420acbe55d9 100644 --- a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode.md +++ b/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode.md @@ -10,6 +10,6 @@ By default, the compression level is set to class to compress and decompress a file. -:::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.Deflate1/CS/deflatetest.cs" id="Snippet1"::: -:::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.Deflate1/VB/deflatetest.vb" id="Snippet1"::: +:::code language="csharp" source="~/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionModeExample.cs" id="Snippet1"::: +:::code language="vb" source="~/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionModeExample.vb" id="Snippet1"::: diff --git a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode_Boolean.md b/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode_Boolean.md deleted file mode 100644 index 90cff216de9..00000000000 --- a/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionMode_Boolean.md +++ /dev/null @@ -1,14 +0,0 @@ -By default, owns the underlying stream, so closing the stream also closes the underlying stream. Note that the state of the underlying stream can affect the usability of the stream. Also, no explicit checks are performed, so no additional exceptions are thrown when the new instance is created. - -If an instance of the class is created with the `mode` parameter equal to `Compress`, header information is inserted immediately. If no further action occurs, the stream appears as a valid, empty, compressed file. - -Using the class to compress a file larger than 4 GB raises an exception. - -By default, the compression level is set to when the compression mode is . - -## Examples - -The following code example shows how to use the class to compress and decompress a file. - -:::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.Deflate1/CS/deflatetest.cs" id="Snippet1"::: -:::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.Deflate1/VB/deflatetest.vb" id="Snippet1"::: diff --git a/includes/remarks/System.IO.Compression/DeflateStream/DeflateStream.md b/includes/remarks/System.IO.Compression/DeflateStream/DeflateStream.md index 52a7a9dc0f2..f03b3570f99 100644 --- a/includes/remarks/System.IO.Compression/DeflateStream/DeflateStream.md +++ b/includes/remarks/System.IO.Compression/DeflateStream/DeflateStream.md @@ -1,4 +1,3 @@ - This class represents the Deflate algorithm, which is an industry-standard algorithm for lossless file compression and decompression. Starting with the .NET Framework 4.5, the class uses the zlib library. As a result, it provides a better compression algorithm and, in most cases, a smaller compressed file than it provides in earlier versions of the .NET Framework. This class does not inherently provide functionality for adding files to or extracting files from zip archives. To work with zip archives, use the and the classes. @@ -9,7 +8,7 @@ The compression functionality in and ## Examples -The following example shows how to use the class to compress and decompress a directory of files. +The following example shows how to use the class to compress and decompress a file. -:::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.Deflate1/CS/deflatetest.cs" id="Snippet1"::: -:::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.Deflate1/VB/deflatetest.vb" id="Snippet1"::: +:::code language="csharp" source="~/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionModeExample.cs" id="Snippet1"::: +:::code language="vb" source="~/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionModeExample.vb" id="Snippet1"::: diff --git a/samples/snippets/csharp/System.IO.Compression/Deflate/Deflate.csproj b/samples/snippets/csharp/System.IO.Compression/Deflate/Deflate.csproj new file mode 100644 index 00000000000..c32f9c0eba6 --- /dev/null +++ b/samples/snippets/csharp/System.IO.Compression/Deflate/Deflate.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + FileCompressionModeExample + + + diff --git a/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionLevelExample.cs b/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionLevelExample.cs new file mode 100644 index 00000000000..99397a2ad77 --- /dev/null +++ b/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionLevelExample.cs @@ -0,0 +1,51 @@ +// +using System; +using System.IO; +using System.IO.Compression; + +public static class FileCompressionLevelExample +{ + private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + private const string OriginalFileName = "original.txt"; + private const string CompressedFileName = "compressed.dfl"; + + public static void Main() + { + CreateFileToCompress(); + CompressFile(); + PrintResults(); + DeleteFiles(); + + /* + Output: + The original file 'original.txt' weighs 445 bytes. + The compressed file 'compressed.dfl' weighs 259 bytes. + */ + } + + private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message); + + private static void CompressFile() + { + using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open); + using FileStream compressedFileStream = File.Create(CompressedFileName); + using var compressor = new DeflateStream(compressedFileStream, CompressionLevel.Fastest); + originalFileStream.CopyTo(compressor); + } + + private static void PrintResults() + { + long originalSize = new FileInfo(OriginalFileName).Length; + long compressedSize = new FileInfo(CompressedFileName).Length; + + Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes."); + Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes."); + } + + private static void DeleteFiles() + { + File.Delete(OriginalFileName); + File.Delete(CompressedFileName); + } +} +// diff --git a/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionModeExample.cs b/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionModeExample.cs new file mode 100644 index 00000000000..0470bc09d54 --- /dev/null +++ b/samples/snippets/csharp/System.IO.Compression/Deflate/FileCompressionModeExample.cs @@ -0,0 +1,68 @@ +// +using System; +using System.IO; +using System.IO.Compression; + +public static class FileCompressionModeExample +{ + private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + private const string OriginalFileName = "original.txt"; + private const string CompressedFileName = "compressed.dfl"; + private const string DecompressedFileName = "decompressed.txt"; + + public static void Main() + { + CreateFileToCompress(); + CompressFile(); + DecompressFile(); + PrintResults(); + DeleteFiles(); + + /* + Output: + + The original file 'original.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + + The compressed file 'compressed.dfl' weighs 265 bytes. + + The decompressed file 'decompressed.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + */ + } + + private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message); + + private static void CompressFile() + { + using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open); + using FileStream compressedFileStream = File.Create(CompressedFileName); + using var compressor = new DeflateStream(compressedFileStream, CompressionMode.Compress); + originalFileStream.CopyTo(compressor); + } + + private static void DecompressFile() + { + using FileStream compressedFileStream = File.Open(CompressedFileName, FileMode.Open); + using FileStream outputFileStream = File.Create(DecompressedFileName); + using var decompressor = new DeflateStream(compressedFileStream, CompressionMode.Decompress); + decompressor.CopyTo(outputFileStream); + } + + private static void PrintResults() + { + long originalSize = new FileInfo(OriginalFileName).Length; + long compressedSize = new FileInfo(CompressedFileName).Length; + long decompressedSize = new FileInfo(DecompressedFileName).Length; + + Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: \"{File.ReadAllText(OriginalFileName)}\""); + Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes."); + Console.WriteLine($"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: \"{File.ReadAllText(DecompressedFileName)}\""); + } + + private static void DeleteFiles() + { + File.Delete(OriginalFileName); + File.Delete(CompressedFileName); + File.Delete(DecompressedFileName); + } +} +// diff --git a/samples/snippets/csharp/System.IO.Compression/Deflate/MemoryWriteReadExample.cs b/samples/snippets/csharp/System.IO.Compression/Deflate/MemoryWriteReadExample.cs new file mode 100644 index 00000000000..dcea395fccd --- /dev/null +++ b/samples/snippets/csharp/System.IO.Compression/Deflate/MemoryWriteReadExample.cs @@ -0,0 +1,44 @@ +// +using System; +using System.IO; +using System.IO.Compression; +using System.Text; + +public static class MemoryWriteReadExample +{ + private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + private static readonly byte[] s_messageBytes = Encoding.ASCII.GetBytes(Message); + + public static void Main() + { + Console.WriteLine($"The original string length is {s_messageBytes.Length} bytes."); + using var stream = new MemoryStream(); + CompressBytesToStream(stream); + Console.WriteLine($"The compressed stream length is {stream.Length} bytes."); + int decompressedLength = DecompressStreamToBytes(stream); + Console.WriteLine($"The decompressed string length is {decompressedLength} bytes, same as the original length."); + /* + Output: + The original string length is 445 bytes. + The compressed stream length is 265 bytes. + The decompressed string length is 445 bytes, same as the original length. + */ + } + + private static void CompressBytesToStream(Stream stream) + { + using var compressor = new DeflateStream(stream, CompressionMode.Compress, leaveOpen: true); + compressor.Write(s_messageBytes, 0, s_messageBytes.Length); + } + + private static int DecompressStreamToBytes(Stream stream) + { + stream.Position = 0; + int bufferSize = 512; + byte[] decompressedBytes = new byte[bufferSize]; + using var decompressor = new DeflateStream(stream, CompressionMode.Decompress); + int length = decompressor.Read(decompressedBytes, 0, bufferSize); + return length; + } +} +// diff --git a/samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.Deflate1/CS/deflatetest.cs b/samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.Deflate1/CS/deflatetest.cs deleted file mode 100644 index 3fd81bb2f3c..00000000000 --- a/samples/snippets/csharp/VS_Snippets_CLR/IO.Compression.Deflate1/CS/deflatetest.cs +++ /dev/null @@ -1,62 +0,0 @@ -// -using System; -using System.IO; -using System.IO.Compression; - -public class Program -{ - static string directoryPath = @"c:\temp"; - public static void Main() - { - - DirectoryInfo directorySelected = new DirectoryInfo(directoryPath); - Compress(directorySelected); - - foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.cmp")) - { - Decompress(fileToDecompress); - } - } - - public static void Compress(DirectoryInfo directorySelected) - { - - foreach (FileInfo file in directorySelected.GetFiles("*.xml")) - using (FileStream originalFileStream = file.OpenRead()) - { - if ((File.GetAttributes(file.FullName) & FileAttributes.Hidden) - != FileAttributes.Hidden & file.Extension != ".cmp") - { - using (FileStream compressedFileStream = File.Create(file.FullName + ".cmp")) - { - using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionMode.Compress)) - { - originalFileStream.CopyTo(compressionStream); - } - } - - FileInfo info = new FileInfo(directoryPath + "\\" + file.Name + ".cmp"); - Console.WriteLine("Compressed {0} from {1} to {2} bytes.", file.Name, file.Length, info.Length); - } - } - } - - public static void Decompress(FileInfo fileToDecompress) - { - using (FileStream originalFileStream = fileToDecompress.OpenRead()) - { - string currentFileName = fileToDecompress.FullName; - string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length); - - using (FileStream decompressedFileStream = File.Create(newFileName)) - { - using (DeflateStream decompressionStream = new DeflateStream(originalFileStream, CompressionMode.Decompress)) - { - decompressionStream.CopyTo(decompressedFileStream); - Console.WriteLine("Decompressed: {0}", fileToDecompress.Name); - } - } - } - } -} -// \ No newline at end of file diff --git a/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program1.cs b/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program1.cs deleted file mode 100644 index 533695f0231..00000000000 --- a/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program1.cs +++ /dev/null @@ -1,40 +0,0 @@ -// -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; - -namespace ConsoleApplication -{ - class Program - { - static void Main(string[] args) - { - string directoryPath = @"c:\users\public\reports"; - DirectoryInfo directorySelected = new DirectoryInfo(directoryPath); - - foreach (FileInfo fileToCompress in directorySelected.EnumerateFiles()) - { - Compress(fileToCompress); - } - } - - public static void Compress(FileInfo fileToCompress) - { - using (FileStream originalFileStream = fileToCompress.OpenRead()) - { - if ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".cmp") - { - using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".cmp")) - { - using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionLevel.Fastest)) - { - originalFileStream.CopyTo(compressionStream); - } - } - } - } - } - } -} -// diff --git a/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program2.cs b/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program2.cs deleted file mode 100644 index 463a098f705..00000000000 --- a/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program2.cs +++ /dev/null @@ -1,41 +0,0 @@ -// -using System; -using System.Collections.Generic; -using System.IO; -using System.IO.Compression; - -namespace ConsoleApplication -{ - class Program - { - static void Main(string[] args) - { - string directoryPath = @"c:\users\public\reports"; - DirectoryInfo directorySelected = new DirectoryInfo(directoryPath); - - foreach (FileInfo fileToCompress in directorySelected.EnumerateFiles()) - { - Compress(fileToCompress); - } - } - - public static void Compress(FileInfo fileToCompress) - { - using (FileStream originalFileStream = fileToCompress.OpenRead()) - { - if ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".cmp") - { - using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".cmp")) - { - using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionLevel.Fastest, true)) - { - originalFileStream.CopyTo(compressionStream); - } - Console.WriteLine(string.Format("file compressed to {0} bytes", compressedFileStream.Length)); - } - } - } - } - } -} -// diff --git a/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program3.cs b/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program3.cs deleted file mode 100644 index 1205dca7a81..00000000000 --- a/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program3.cs +++ /dev/null @@ -1,39 +0,0 @@ -// -using System; -using System.Text; -using System.IO; -using System.IO.Compression; - -namespace ExampleConsoleApplication -{ - class Program - { - static void Main(string[] args) - { - UnicodeEncoding uniEncode = new UnicodeEncoding(); - - byte[] bytesToCompress = uniEncode.GetBytes("example text to compress and decompress"); - Console.WriteLine("starting with: " + uniEncode.GetString(bytesToCompress)); - - using (FileStream fileToCompress = File.Create("examplefile.gz")) - { - using (DeflateStream compressionStream = new DeflateStream(fileToCompress, CompressionMode.Compress)) - { - compressionStream.Write(bytesToCompress, 0, bytesToCompress.Length); - } - } - - byte[] decompressedBytes = new byte[bytesToCompress.Length]; - using (FileStream fileToDecompress = File.Open("examplefile.gz", FileMode.Open)) - { - using (DeflateStream decompressionStream = new DeflateStream(fileToDecompress, CompressionMode.Decompress)) - { - decompressionStream.Read(decompressedBytes, 0, bytesToCompress.Length); - } - } - - Console.WriteLine("ending with: " + uniEncode.GetString(decompressedBytes)); - } - } -} -// \ No newline at end of file diff --git a/samples/snippets/visualbasic/System.IO.Compression/Deflate/Deflate.vbproj b/samples/snippets/visualbasic/System.IO.Compression/Deflate/Deflate.vbproj new file mode 100644 index 00000000000..38c40ed3d30 --- /dev/null +++ b/samples/snippets/visualbasic/System.IO.Compression/Deflate/Deflate.vbproj @@ -0,0 +1,9 @@ + + + + Exe + net6.0 + Deflate.MemoryWriteReadExample + + + diff --git a/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionLevelExample.vb b/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionLevelExample.vb new file mode 100644 index 00000000000..3423d2f6624 --- /dev/null +++ b/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionLevelExample.vb @@ -0,0 +1,48 @@ +' +Imports System.IO +Imports System.IO.Compression + +Module FileCompressionLevelExample + Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + Private Const OriginalFileName As String = "original.txt" + Private Const CompressedFileName As String = "compressed.dfl" + + Sub Main() + CreateFileToCompress() + CompressFile() + PrintResults() + DeleteFiles() + + 'Output: + ' The original file 'original.txt' weighs 445 bytes. + ' The compressed file 'compressed.dfl' weighs 259 bytes. + End Sub + + Private Sub CreateFileToCompress() + File.WriteAllText(OriginalFileName, Message) + End Sub + + Private Sub CompressFile() + Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open) + Using compressedFileStream As FileStream = File.Create(CompressedFileName) + Using compressor = New DeflateStream(compressedFileStream, CompressionLevel.Fastest) + originalFileStream.CopyTo(compressor) + End Using + End Using + End Using + End Sub + + Private Sub PrintResults() + Dim originalSize As Long = New FileInfo(OriginalFileName).Length + Dim compressedSize As Long = New FileInfo(CompressedFileName).Length + + Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes.") + Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.") + End Sub + + Private Sub DeleteFiles() + File.Delete(OriginalFileName) + File.Delete(CompressedFileName) + End Sub +End Module +' diff --git a/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionModeExample.vb b/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionModeExample.vb new file mode 100644 index 00000000000..215bf3ca6e4 --- /dev/null +++ b/samples/snippets/visualbasic/System.IO.Compression/Deflate/FileCompressionModeExample.vb @@ -0,0 +1,68 @@ +' +Imports System.IO +Imports System.IO.Compression + +Module FileCompressionModeExample + Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + Private Const OriginalFileName As String = "original.txt" + Private Const CompressedFileName As String = "compressed.dfl" + Private Const DecompressedFileName As String = "decompressed.txt" + + Sub Main() + CreateFileToCompress() + CompressFile() + DecompressFile() + PrintResults() + DeleteFiles() + + 'Output: + + ' The original file 'original.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + + ' The compressed file 'compressed.dfl' weighs 265 bytes. + + ' The decompressed file 'decompressed.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + + End Sub + + Private Sub CreateFileToCompress() + File.WriteAllText(OriginalFileName, Message) + End Sub + + Private Sub CompressFile() + Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open) + Using compressedFileStream As FileStream = File.Create(CompressedFileName) + Using compressor = New DeflateStream(compressedFileStream, CompressionMode.Compress) + originalFileStream.CopyTo(compressor) + End Using + End Using + End Using + End Sub + + Private Sub DecompressFile() + Using compressedFileStream As FileStream = File.Open(CompressedFileName, FileMode.Open) + Using outputFileStream As FileStream = File.Create(DecompressedFileName) + Using decompressor = New DeflateStream(compressedFileStream, CompressionMode.Decompress) + decompressor.CopyTo(outputFileStream) + End Using + End Using + End Using + End Sub + + Private Sub PrintResults() + Dim originalSize As Long = New FileInfo(OriginalFileName).Length + Dim compressedSize As Long = New FileInfo(CompressedFileName).Length + Dim decompressedSize As Long = New FileInfo(DecompressedFileName).Length + + Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: ""{File.ReadAllText(OriginalFileName)}""") + Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.") + Console.WriteLine($"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: ""{File.ReadAllText(DecompressedFileName)}""") + End Sub + + Private Sub DeleteFiles() + File.Delete(OriginalFileName) + File.Delete(CompressedFileName) + File.Delete(DecompressedFileName) + End Sub +End Module +' diff --git a/samples/snippets/visualbasic/System.IO.Compression/Deflate/MemoryWriteReadExample.vb b/samples/snippets/visualbasic/System.IO.Compression/Deflate/MemoryWriteReadExample.vb new file mode 100644 index 00000000000..344bfc68499 --- /dev/null +++ b/samples/snippets/visualbasic/System.IO.Compression/Deflate/MemoryWriteReadExample.vb @@ -0,0 +1,41 @@ +' +Imports System.IO +Imports System.IO.Compression +Imports System.Text + +Module MemoryWriteReadExample + Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." + Private ReadOnly s_messageBytes As Byte() = Encoding.ASCII.GetBytes(Message) + + Sub Main() + Console.WriteLine($"The original string length is {s_messageBytes.Length} bytes.") + + Using stream = New MemoryStream() + CompressBytesToStream(stream) + Console.WriteLine($"The compressed stream length is {stream.Length} bytes.") + Dim decompressedLength As Integer = DecompressStreamToBytes(stream) + Console.WriteLine($"The decompressed string length is {decompressedLength} bytes, same as the original length.") + End Using + ' Output: + ' The original string length is 445 bytes. + ' The compressed stream length is 265 bytes. + ' The decompressed string length is 445 bytes, same as the original length. + End Sub + + Private Sub CompressBytesToStream(ByVal stream As Stream) + Using compressor = New DeflateStream(stream, CompressionMode.Compress, leaveOpen:=True) + compressor.Write(s_messageBytes, 0, s_messageBytes.Length) + End Using + End Sub + + Private Function DecompressStreamToBytes(ByVal stream As Stream) As Integer + stream.Position = 0 + Dim bufferSize As Integer = 512 + Dim decompressedBytes As Byte() = New Byte(bufferSize - 1) {} + Using decompressor = New DeflateStream(stream, CompressionMode.Decompress) + Dim length As Integer = decompressor.Read(decompressedBytes, 0, bufferSize) + Return length + End Using + End Function +End Module +' diff --git a/samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.Deflate1/VB/deflatetest.vb b/samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.Deflate1/VB/deflatetest.vb deleted file mode 100644 index 2dd7f02ed34..00000000000 --- a/samples/snippets/visualbasic/VS_Snippets_CLR/IO.Compression.Deflate1/VB/deflatetest.vb +++ /dev/null @@ -1,50 +0,0 @@ -' -Imports System.IO -Imports System.IO.Compression - -Public Class Program - Shared directoryPath As String = "c:\temp" - Public Shared Sub Main() - - Dim directorySelected As New DirectoryInfo(directoryPath) - Compress(directorySelected) - - - For Each fileToDecompress As FileInfo In directorySelected.GetFiles("*.cmp") - Decompress(fileToDecompress) - Next - End Sub - - Public Shared Sub Compress(directorySelected As DirectoryInfo) - - For Each file__1 As FileInfo In directorySelected.GetFiles("*.xml") - Using originalFileStream As FileStream = file__1.OpenRead() - If (File.GetAttributes(file__1.FullName) And FileAttributes.Hidden) <> FileAttributes.Hidden And file__1.Extension <> ".cmp" Then - Using compressedFileStream As FileStream = File.Create(file__1.FullName & ".cmp") - Using compressionStream As Compression.DeflateStream = New DeflateStream(compressedFileStream, CompressionMode.Compress) - originalFileStream.CopyTo(compressionStream) - End Using - End Using - - Dim info As New FileInfo(directoryPath & "\" & file__1.Name & ".cmp") - Console.WriteLine("Compressed {0} from {1} to {2} bytes.", file__1.Name, file__1.Length, info.Length) - End If - End Using - Next - End Sub - - Public Shared Sub Decompress(fileToDecompress As FileInfo) - Using originalFileStream As FileStream = fileToDecompress.OpenRead() - Dim currentFileName As String = fileToDecompress.FullName - Dim newFileName As String = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length) - - Using decompressedFileStream As FileStream = File.Create(newFileName) - Using decompressionStream As New DeflateStream(originalFileStream, CompressionMode.Decompress) - decompressionStream.CopyTo(decompressedFileStream) - Console.WriteLine("Decompressed: {0}", fileToDecompress.Name) - End Using - End Using - End Using - End Sub -End Class -' \ No newline at end of file diff --git a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program1.vb b/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program1.vb deleted file mode 100644 index dc8ea907684..00000000000 --- a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program1.vb +++ /dev/null @@ -1,29 +0,0 @@ -' -Imports System.IO -Imports System.IO.Compression - -Module Module1 - - Sub Main() - Dim directoryPath As String = "c:\users\public\reports" - Dim directorySelected As DirectoryInfo = New DirectoryInfo(directoryPath) - - For Each fileToCompress As FileInfo In directorySelected.EnumerateFiles() - Compress(fileToCompress) - Next - End Sub - - Public Sub Compress(fileToCompress As FileInfo) - Using originalFileStream As FileStream = fileToCompress.OpenRead() - If ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) <> FileAttributes.Hidden And fileToCompress.Extension <> ".cmp") Then - Using compressedFileStream As FileStream = File.Create(fileToCompress.FullName + ".cmp") - Using compressionStream As DeflateStream = New DeflateStream(compressedFileStream, CompressionLevel.Fastest) - originalFileStream.CopyTo(compressionStream) - End Using - End Using - End If - End Using - End Sub - -End Module -' diff --git a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program2.vb b/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program2.vb deleted file mode 100644 index d04d483789e..00000000000 --- a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program2.vb +++ /dev/null @@ -1,30 +0,0 @@ -' -Imports System.IO -Imports System.IO.Compression - -Module Module1 - - Sub Main() - Dim directoryPath As String = "c:\users\public\reports" - Dim directorySelected As DirectoryInfo = New DirectoryInfo(directoryPath) - - For Each fileToCompress As FileInfo In directorySelected.EnumerateFiles() - Compress(fileToCompress) - Next - End Sub - - Public Sub Compress(fileToCompress As FileInfo) - Using originalFileStream As FileStream = fileToCompress.OpenRead() - If ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) <> FileAttributes.Hidden And fileToCompress.Extension <> ".cmp") Then - Using compressedFileStream As FileStream = File.Create(fileToCompress.FullName + ".cmp") - Using compressionStream As DeflateStream = New DeflateStream(compressedFileStream, CompressionLevel.Fastest, True) - originalFileStream.CopyTo(compressionStream) - End Using - Console.WriteLine(String.Format("file compressed to {0} bytes", compressedFileStream.Length)) - End Using - End If - End Using - End Sub - -End Module -' diff --git a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program3.vb b/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program3.vb deleted file mode 100644 index d11c581ee36..00000000000 --- a/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program3.vb +++ /dev/null @@ -1,30 +0,0 @@ -' -Imports System.IO -Imports System.IO.Compression -Imports System.Text - -Module Module1 - - Sub Main() - Dim uniEncode As UnicodeEncoding = New UnicodeEncoding() - - Dim bytesToCompress = uniEncode.GetBytes("example text to compress and decompress") - Console.WriteLine("starting with: " + uniEncode.GetString(bytesToCompress)) - - Using fileToCompress As FileStream = File.Create("examplefile.gz") - Using compressionStream As DeflateStream = New DeflateStream(fileToCompress, CompressionMode.Compress) - compressionStream.Write(bytesToCompress, 0, bytesToCompress.Length) - End Using - End Using - - Dim decompressedBytes(bytesToCompress.Length - 1) As Byte - Using fileToDecompress As FileStream = File.Open("examplefile.gz", FileMode.Open) - Using decompressionStream As DeflateStream = New DeflateStream(fileToDecompress, CompressionMode.Decompress) - decompressionStream.Read(decompressedBytes, 0, bytesToCompress.Length) - End Using - End Using - - Console.WriteLine("ending with: " + uniEncode.GetString(decompressedBytes)) - End Sub -End Module -' \ No newline at end of file diff --git a/xml/System.IO.Compression/DeflateStream.xml b/xml/System.IO.Compression/DeflateStream.xml index 73d5b1ce016..9e525a23c28 100644 --- a/xml/System.IO.Compression/DeflateStream.xml +++ b/xml/System.IO.Compression/DeflateStream.xml @@ -105,21 +105,15 @@ One of the enumeration values that indicates whether to emphasize speed or compression efficiency when compressing the stream. Initializes a new instance of the class by using the specified stream and compression level. - class. - - This constructor overload uses the compression mode . To set the compression mode to another value, use the or overload. -## Examples - The following example shows how to set the compression level when creating a object. - - :::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program1.cs" id="Snippet1"::: - :::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program1.vb" id="Snippet1"::: - - ]]> +[!INCLUDE[remarks](~/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel.md)] + + ]]> is . @@ -232,7 +226,11 @@ class, and whether to leave the stream object open after disposing the object. + +[!INCLUDE[remarks](~/includes/remarks/System.IO.Compression/DeflateStream/.ctor_Stream_CompressionLevel.md)] ]]> @@ -284,7 +282,7 @@ @@ -1221,8 +1219,8 @@ This method read a maximum of `buffer.Length` bytes from the current stream and ## Examples The following example shows how to compress and decompress bytes by using the and methods. - :::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program3.cs" id="Snippet3"::: - :::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program3.vb" id="Snippet3"::: + :::code language="csharp" source="~/samples/snippets/csharp/System.IO.Compression/Deflate/MemoryWriteReadExample.cs" id="Snippet1"::: + :::code language="vb" source="~/samples/snippets/visualbasic/System.IO.Compression/Deflate/MemoryWriteReadExample.vb" id="Snippet1"::: ]]> @@ -1579,8 +1577,8 @@ If the write operation is successful, the position within the Deflate stream adv ## Examples The following example shows how to compress and decompress bytes by using the and methods. - :::code language="csharp" source="~/samples/snippets/csharp/VS_Snippets_CLR_System/system.io.compression.deflatestream/cs/program3.cs" id="Snippet3"::: - :::code language="vb" source="~/samples/snippets/visualbasic/VS_Snippets_CLR_System/system.io.compression.deflatestream/vb/program3.vb" id="Snippet3"::: + :::code language="csharp" source="~/samples/snippets/csharp/System.IO.Compression/Deflate/MemoryWriteReadExample.cs" id="Snippet1"::: + :::code language="vb" source="~/samples/snippets/visualbasic/System.IO.Compression/Deflate/MemoryWriteReadExample.vb" id="Snippet1"::: ]]>