web-dev-qa-db-fra.com

Fin de flux rencontré avant la fin de l'analyse?

J'essaie de désérialiser un flux mais j'obtiens toujours l'erreur "Fin du flux rencontré avant la fin de l'analyse"?

Voici le code:

        //Some code here
        BinaryFormatter b = new BinaryFormatter();
        return (myObject)b.Deserialize(s);//s---> is a Stream object that has been fill up with data some line over here

Quelqu'un a des idées?

40
Mister Dev

Essayez de définir la position sur 0 de votre flux et n'utilisez pas votre objet mais le type d'objet.

        BinaryFormatter b = new BinaryFormatter();
        s.Position = 0;
        return (YourObjectType)b.Deserialize(s);
50
Patrick Desjardins

Assurez-vous que la sérialisation est terminée et que le type de sérialisation correspond au type de dé-sérialisation (c’est-à-dire, assurez-vous que vous sérialisez avec un BinaryFormatter si vous en déssérialisez avec un). Assurez-vous également que le flux sur lequel vous avez sérialisé a vraiment terminé la sérialisation, avec un Stream.Flush () ou quelque chose de similaire.

6
GWLlosa
s.Position = 0;

c'est parce que vous devez revenir au début pour commencer à copier les données sur le tableau!

1
Chand Priyankara

La même exception a été lancée jusqu'à ce que j'ajoute la balise [Serializable] à la classe en cours de sérialisation :)

Ensuite, tout a fonctionné parfaitement.

1
Ryan O'Connor

Je viens de rencontrer une erreur similaire

Il s’agissait d’obtenir un type de données différent lors de la sérialisation et de la désérialisation. Par erreur, lors du stockage des données sur mariadb, j’utilisais MediumText et lors de la récupération des données, j’avais utilisé Text, c’est pourquoi j’ai reçu une partie seulement du flux.

Il suffit de vérifier si les types de données sont les mêmes.

0
lastboy

Dans mon cas j'ai utilisé:

stream.Seek(0, SeekOrigin.Begin);

après avoir sérialisé le flux, et avant de le désérialiser, le flux fonctionne de manière charmante. J'espère que cela t'aides!

0
Alia Ramli Ramli