GZipStream et de décompression

J'ai un code qui devrait faire de la compression:

FileStream fs = new FileStream("g:\\gj.txt", FileMode.Open);
FileStream fd = new FileStream("g:\\gj.zip", FileMode.Create);
GZipStream csStream = new GZipStream(fd, CompressionMode.Compress);

byte[] compressedBuffer = new byte[500];
int offset = 0;
int nRead;

nRead = fs.Read(compressedBuffer, offset, compressedBuffer.Length);
while (nRead > 0)
{
    csStream.Write(compressedBuffer, offset, nRead);
    offset = offset + nRead;
    nRead = fs.Read(compressedBuffer, offset, compressedBuffer.Length);
}

fd.Close();
fs.Close();

et je pense qu'il fait, mais je veux décompresser ce qui a été compressé à la manière ci-dessus. Je ne somethink comme ça:

FileStream fd = new FileStream("g:\\gj.new", FileMode.Create);
FileStream fs = new FileStream("g:\\gj.zip", FileMode.Open);
GZipStream csStream = new GZipStream(fs, CompressionMode.Decompress);

byte[] decompressedBuffer = new byte[500];
int offset = 0;
int nRead;

nRead=csStream.Read(decompressedBuffer, offset, decompressedBuffer.Length);
while (nRead > 0)
{
    fd.Write(decompressedBuffer, offset, nRead);
    offset = offset + nRead;
    nRead = csStream.Read(decompressedBuffer, offset, decompressedBuffer.Length);
}

fd.Close();
fs.Close();

et ici il ne fait pas... j'ai nRead = 0 befeore entrer dans la boucle... Ce que je fais de mal??
Le fichier de test que j'utilise est le principe le plus simple fichier TEXTE (taille: 104 octets)...

Édité réponse à montrer à la fois lire et écrire
Notez également que gzip != ".zip"
(remarque, j'ai corrigé un bug après validation; cheack que les deux while les boucles que Read sur la ligne du haut (pas à la base).

OriginalL'auteur | 2009-10-17