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 MainPage.

Start a new Windows Phone project in Visual Studio and from the Toolbox, add the following controls to the Main page:

      Two Button controls. In the Properties window make the following changes:

Button

Button.Content Property

Button.Name Property

1

Compress Files

btnCompress

2

Expand Files

btnExpand

      A TextBlock control below the buttons. This control will display statistics about the compression/expanding process.

Step 2: Add a reference to the C1.Phone.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.Phone.Zip assembly from the list, or browse to find the C1.Phone.Zip.dll file.

Select the MainPage.cs or go to View|Code to open the Code Editor. At the top of the file, add the following statements:

      C#

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

Step 3: Define the directory names for the compressed and expanded files.

In the Code Editor of the form, define the following constants:

      C#

These are the directory names where the compressed and expanded files will be stored (relative to the directory where the tutorial application is located on your disk).

Step 4: Add code to compress files.

Add the following code to create the source files:

      C#

 

Step 5: Add code to compress the file.

Add the following code to handle the Click event for the Compress 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.

Finally, the function closes both streams. Note the use of the Finally statement to ensure that both streams are properly closed even if there are exceptions while the function is executing.

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 6: Add code to open the compressed file.

Add the following code to handle the Click event for the Expand Files 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.