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?
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);
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.
s.Position = 0;
c'est parce que vous devez revenir au début pour commencer à copier les données sur le tableau!
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.
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.
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!