root/branches/Abonament/BazaReklam.Updater/ICSharpCode.SharpZipLib/BZip2/BZip2.cs @ 876

Wersja 597, 4.6 KB (wprowadzona przez marek, 17 years temu)

re #165

Line 
1// BZip2.cs
2//
3// Copyright (C) 2001 Mike Krueger
4//
5// This program is free software; you can redistribute it and/or
6// modify it under the terms of the GNU General Public License
7// as published by the Free Software Foundation; either version 2
8// of the License, or (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program; if not, write to the Free Software
17// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18//
19// Linking this library statically or dynamically with other modules is
20// making a combined work based on this library.  Thus, the terms and
21// conditions of the GNU General Public License cover the whole
22// combination.
23//
24// As a special exception, the copyright holders of this library give you
25// permission to link this library with independent modules to produce an
26// executable, regardless of the license terms of these independent
27// modules, and to copy and distribute the resulting executable under
28// terms of your choice, provided that you also meet, for each linked
29// independent module, the terms and conditions of the license of that
30// module.  An independent module is a module which is not derived from
31// or based on this library.  If you modify this library, you may extend
32// this exception to your version of the library, but you are not
33// obligated to do so.  If you do not wish to do so, delete this
34// exception statement from your version.
35
36using System;
37using System.IO;
38
39namespace ICSharpCode.SharpZipLib.BZip2
40{
41       
42        /// <summary>
43        /// A helper class to simplify compressing and decompressing streams.
44        /// </summary>
45        public sealed class BZip2
46        {
47                /// <summary>
48                /// Decompress <paramref name="inStream">input</paramref> writing
49                /// decompressed data to the <paramref name="outStream">output stream</paramref>
50                /// </summary>
51                /// <param name="inStream">The stream containing data to decompress.</param>
52                /// <param name="outStream">The stream to write decompressed data to.</param>
53                /// <remarks>Both streams are closed on completion</remarks>
54                public static void Decompress(Stream inStream, Stream outStream)
55                {
56                        if ( inStream == null ) {
57                                throw new ArgumentNullException("inStream");
58                        }
59                       
60                        if ( outStream == null ) {
61                                throw new ArgumentNullException("outStream");
62                        }
63                       
64                        using ( outStream ) {
65                                using ( BZip2InputStream bzis = new BZip2InputStream(inStream) ) {
66                                        int ch = bzis.ReadByte();
67                                        while (ch != -1) {
68                                                outStream.WriteByte((byte)ch);
69                                                ch = bzis.ReadByte();
70                                        }
71                                }
72                        }
73                }
74               
75                /// <summary>
76                /// Compress <paramref name="inStream">input stream</paramref> sending
77                /// result to <paramref name="outStream">output stream</paramref>
78                /// </summary>
79                /// <param name="inStream">The stream to compress.</param>
80                /// <param name="outStream">The stream to write compressed data to.</param>
81                /// <param name="blockSize">The block size to use.</param>
82                /// <remarks>Both streams are closed on completion</remarks>
83                public static void Compress(Stream inStream, Stream outStream, int blockSize)
84                {                       
85                        if ( inStream == null ) {
86                                throw new ArgumentNullException("inStream");
87                        }
88                       
89                        if ( outStream == null ) {
90                                throw new ArgumentNullException("outStream");
91                        }
92                       
93                        using ( inStream ) {
94                                using (BZip2OutputStream bzos = new BZip2OutputStream(outStream, blockSize)) {
95                                        int ch = inStream.ReadByte();
96                                        while (ch != -1) {
97                                                bzos.WriteByte((byte)ch);
98                                                ch = inStream.ReadByte();
99                                        }
100                                }
101                        }
102                }
103
104                /// <summary>
105                /// Initialise a default instance of this class.
106                /// </summary>
107                BZip2()
108                {
109                }
110        }
111}
112
113/* derived from a file which contained this license :
114 * Copyright (c) 1999-2001 Keiron Liddle, Aftex Software
115 *
116 * This library is free software; you can redistribute it and/or
117 * modify it under the terms of the GNU Lesser General Public
118 * License as published by the Free Software Foundation; either
119 * version 2.1 of the License, or (at your option) any later version.
120 *
121 * This library is distributed in the hope that it will be useful,
122 * but WITHOUT ANY WARRANTY; without even the implied warranty of
123 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
124 * Lesser General Public License for more details.
125 *
126*/
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.