Sauvegarder un stream [Résolu]

Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 1 déc. 2007 à 15:51 - Dernière réponse :
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
- 2 déc. 2007 à 16:57
Salut, je suis surpris de ne pas trouver dans le framework une fonction pour enregistrer un stream dans un fichier.. Avant de poster le code suivant sur Codyx, je voulais savoir si vous voyez une autre méthode ?

private static void StreamToFile( Stream inputStream, string outputFile, FileMode fileMode )
{
    if ( inputStream == null )
        throw new ArgumentNullException( "inputStream" );


    if ( String.IsNullOrEmpty( outputFile ) )
        throw new ArgumentException( "Argument null or empty.", "outputFile" );


    using ( FileStream outputStream = new FileStream( outputFile, fileMode, FileAccess.Write ) )
    {
        int cnt = 0;
        const int LEN = 4096;
        byte[ ] buffer = new byte[ LEN ];


        while( ( cnt = inputStream.Read( buffer, 0, LEN ) ) != 0 )
            outputStream.Write( buffer, 0, cnt );
    }
}
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
168
Date d'inscription
jeudi 28 juin 2001
Dernière intervention
18 octobre 2008
2 déc. 2007 à 15:24
3
Merci
Salut,
L'ennui avec un Stream, c'est qu'il peut très bien ne jamais finir (par exemple un flux d'une radio web). Dans ce cas, le copier dans un fichier peut poser des problèmes.

Si ton flux est un fichier, autant copier directement le fichier (System.IO.File.Copy).

Dans tous les autres cas, le code que tu proposes est une solution.

Merci cs_niky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_niky
Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
2 déc. 2007 à 15:33
3
Merci
Salut,

Heu, pas mieux :-)
En tout cas l'absence de méthode dédiée à ce genre de tâche dans le formework ne me choque pas plus que ça, ça ne serait pas forcément très utilisé.
Après tout dans beaucoup de cas, notamment sur tout ce qui est *Writer, on spécifie/peut spécifier soit même le Stream sous-jacent, et du coup directement fournir le FileStream adéquat.
Sinon dans le cas particulier de MemoryStream, on a la méthode WriteTo, mais il est vrai que ce n'est pas dédié à l'écriture du fichier.

/*
coq
MVP Visual C#
CoqBlog
*/

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
3248
Date d'inscription
lundi 25 avril 2005
Dernière intervention
27 octobre 2012
2 déc. 2007 à 16:57
0
Merci
Merci pour vos réponses.. en fait la question s'est posée quand j'ai du sauvegarder le stream ( ConnectStream ) renvoyé par la methode HttpWebResponse.GetResponseStream( ) .
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.