Sauvegarder un stream [Résolu]

Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 1 déc. 2007 à 15:51 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 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 

3 réponses

Répondre au sujet
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 2 déc. 2007 à 15:24
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_niky
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 2 déc. 2007 à 15:33
+3
Utile
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
*/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 2 déc. 2007 à 16:57
0
Utile
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.