2009-01-11 12 views
2

J'ai écrit un programme qui établira une connexion réseau avec un ordinateur distant en utilisant TCPClient. Je l'utilise pour transférer des fichiers en morceaux de 100k vers une application .net à distance et les écrit ensuite au disque dur. Tous les transferts de fichiers fonctionnent bien sauf en ce qui concerne les fichiers ZIP - il est curieux de noter que le fichier assemblé est toujours 98K ... y a-t-il un sombre secret pour les fichiers ZIP qui les empêche d'être manipulés de cette manière. Encore une fois tous les autres transferts de fichiers fonctionnent très bien, image, xls, txt, CHM, exe, etc.C# Lecture de fichiers 'Zip' avec FileStream

Confused

Répondre

3

Eh bien, vous n'avez montré aucun code, il est donc difficile de dire exactement ce qui ne va pas.

La erreur habituelle est de supposer que Stream.Read lit toutes les données que vous lui demandez au lieu de se rendre compte qu'il peut lire moins, mais que le montant qu'il effectivement lecture est la valeur de retour.

En d'autres termes, le code ne doit pas être:

byte[] buffer = new byte[input.Length]; 
input.Read(buffer, 0, buffer.Length); 
output.Write(buffer, 0, buffer.Length); 

mais quelque chose comme:

byte[] buffer = new byte[32 * 1024]; 
int bytesRead; 
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0) 
{ 
    output.Write(buffer, 0, bytesRead); 
} 

Mais c'est juste une supposition. Si vous pouviez poster du code, nous aurions une meilleure chance de le découvrir.

0

Il se pourrait que vous écrasez (au lieu d'ajouter à) le fichier existant avec chaque morceau reçu? Par conséquent, la taille finale du fichier sera < = la taille d'un bloc.

Mais sans code, il est difficile de déterminer la cause du problème.

1

Le code réel serait utile.

Utilisez-vous BinaryReader/BinaryWriter?

(c'est-à-dire basé sur des données plutôt que sur du texte).

Vous pouvez essayer d'utiliser une comparaison de fichiers hexadécimaux (par exemple Beyond Compare) pour comparer l'original et la copie et voir si cela vous donne des indices.

Questions connexes