Compressing Files

This tutorial shows how you can compress and expand individual files. Note that these are not zip files; they are just compressed streams on disk. Here is what the final application will look like:

 

Step 1: Create the main form.

Start a new Silverlight project in Visual Studio and from the Toolbox, add the following controls to the form:

      Four Button controls along the left edge of the form, as shown in the picture above. In the Properties window make the following changes:

Button

Button.Content Property

Button.Name Property

Button.IsEnabled Property

1

Open Source File

btnOpenSourceFile

True (Default)

2

Save Compressed File

btnSaveCompressedFile

False

3

Open Compressed File

btnOpenCompressedFile

False

4

Save Expanded File

btnSaveExpandedFile

False

Note that the Save Expanded File button cannot be used until we have some opened a compressed file to save.

      A Label control on the right of the buttons. This control will display statistics about the compression/expanding process.

Step 2: Add a reference to the C1.Silverlight.Zip assembly.

Go to the Solution Explorer window and click the Show All Files button. Right-click on References, and select the Add Reference menu option. Select the C1.Silverlight.Zip assembly from the list, or browse to find the C1.Silverlight.Zip.dll file.

Select the MainPage.xaml.vb tab (MainPage.xaml.cs in C#) or go to View|Code to open the Code Editor. At the top of the file, add the following statements:

      Visual Basic

      C#

This makes the objects defined in the C1.Silverlight.Zip and System.IO assemblies visible to the project and saves a lot of typing.

Step 3: Add code to open the source file.

Add the following code to handle the Click event for the Open Source File command button:

      C#

Step 4: Add code to save the compressed file.

Add the following code to handle the Click event for the Save Compressed File command button:

      C#

Add the following code for the CompressFile function:

      C#

The function starts by creating two new file streams: one for the source file and one for the compressed file. Then it creates a C1ZStreamWriter object and attaches it to the destination stream. Next, it calls the StreamCopy function to transfer data from the source file and write it into the compressor stream.

The StreamCopy function simply copies bytes from one stream to another. Here's the code:

      C#

Note that the function calls the Flush method after it is done to ensure that any cached data is written out when the function is done copying. This is especially important when dealing with compressed streams, since they cache substantial amounts of data in order to achieve good compression rates.

Step 5: Add code to open the compressed file.

Add the following code to handle the Click event for the Open Compressed File command button:

      C#

Step 6: Add code to save the expanded file.

Add the following code to handle the Click event for the Save Expanded File command button:

      C#

Here's the code for the ExpandFile function:

      C#

The function is similar to CompressFile, except it attaches a C1ZStreamReader to the source stream instead of attaching a C1ZStreamWriter to the destination stream.

This concludes the Compressing Files tutorial.


Send us comments about this topic.
Copyright © GrapeCity, inc. All rights reserved.