J'essaie de trouver un moyen de lire une partie d'un flux. J'ai un flux avec 40000 octets et j'ai besoin de lire seulement de la position 8000 à 15000, probablement quelque chose de facile mais je n'arrive pas à trouver un moyen facile d'obtenir un segment de flux.. Segment de lecture de flux .Net d'un flux
Répondre
Depuis la lecture d'une partie du flux devrait être assez facile, Je suppose que vous avez réellement besoin d'un nouvel objet Stream qui accède uniquement au segment donné du flux sous-jacent.
ie. vous voulez quelque chose comme ceci:
Stream segment = new StreamSegment(underlyingStream, 8000, 7000);
J'ai une telle classe, et vous pouvez le trouver ici: LVK.IO.PartialStream. Il s'appuie sur d'autres classes de ma bibliothèque de classe, en particulier LVK.IO.WrapperStream, mais vous pouvez tout trouver là-bas, il suffit de saisir les quelques fichiers dont vous avez réellement besoin (si vous décidez de les utiliser.)
Pour l'utiliser, vous devez spécifiez si votre objet PartialStream possède le flux sous-jacent. Si c'est le cas, lorsque vous disposez de l'objet PartialStream, il disposera également du flux sous-jacent.
Pour l'exemple ci-dessus: (. Ou passer true
comme second paramètre)
Stream segment = new PartialStream(underlyingStream, false, 8000, 7000);
en supposant qu'il ne doit pas posséder le flux sous-jacent
Notes:
- Construire la Au-dessus de l'objet PartialStream va repositionner le flux sous-jacent au début de ce segment (position 8000 dans l'exemple ci-dessus.)
- Vous ne devez pas utiliser le flux sous-jacent lorsque vous utilisez l'objet de flux partiel, car il existe une comptabilité interne liée à la position à l'intérieur du segment. Si vous repositionnez le flux sous-jacent sans passer par le flux partiel, le comportement n'est pas défini.
Les liens dans votre réponse semblent être brisés. Avez-vous déplacé le projet ailleurs? –
Si la recherche de soutien de flux, vous pouvez simplement passer à la position, sinon vous devez lire le flux pour arriver à cette position:
if (theStream.CanSeek) {
theStream.Seek(8000, SeekOrigin.Current);
} else {
// read 8000 bytes and throw away
}
// read the 7000 bytes to keep
- 1. Lenteur dans la lecture du flux .NET
- 2. lecture flux xml
- 3. Windows Mobile App - Lecture de flux MMS?
- 4. flux de lecture de java Runtime.exec
- 5. Traitement .NET Flux JSON
- 6. .NET annuler le flux BeginRead
- 7. Lecture du flux deux fois?
- 8. Lecture de flux MMS en Python
- 9. lecture d'un flux en C++
- 10. WebException lors de la lecture du flux de réponses WebException
- 11. Objet de flux de chaîne dans la bibliothèque .NET
- 12. .NET flux de travail Suggestions moteur
- 13. .net IHTTPHandler Flux de données binaires SQL
- 14. Flux de fermeture, toujours nécessaire? .net
- 15. Aide sur les flux (.net)
- 16. Lecture flux Atom du compte gmail à partir de C#
- 17. Lecture non destructible à partir d'un flux
- 18. Lecture du flux d'entrée USB sur Linux
- 19. Comment synchroniser la lecture/écriture au flux?
- 20. lecture des flux RSS -> pas compatible
- 21. Lecture d'un flux RTP entrant avec GStreamer
- 22. Lecture d'un flux HTTP dans un tableau
- 23. Lecture et écriture sur le flux webcam
- 24. Flux de travail/conception
- 25. Android - Lecture des balises ID3 de flux mp3
- 26. Problèmes de lecture d'un flux RSS avec SimpleXML
- 27. Problèmes lors de la lecture du flux RSS avec jQuery.get()
- 28. Programmation lecture des messages muraux/flux de facebook "pages"
- 29. Lecture de plusieurs flux audio (mux) dans Silverlight
- 30. Lecture de flux http en direct dans vlcj
Avez-vous besoin de passer ce segment à un autre morceau de code qui attend un flux contenant uniquement le segment de données? Par exemple, vous avez placé un fichier .PNG dans un autre fichier et souhaitez utiliser Image.FromStream ou similaire pour charger le fichier PNG, mais en le passant, le flux entier échoue. Vous voulez donc qu'un nouvel objet semblable à un flux donne uniquement accès au fichier. Contenu PNG? –