IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Relation entre StreamWriter et FileStream


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 56
    Par défaut Relation entre StreamWriter et FileStream
    Salut,

    Est ce que en écrivant dans un streamwriter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StreamWriter sw = new StreamWriter(fs);
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileStream fs = File.Open("C://ecriture.txt", FileMode.Create, FileAccess.ReadWrite, FileShare.Read);
    et en écrivant dans le StreamWriter on écrit aussi dans le fichier "FileStream"?

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Si tu passes par le constructeur de StreamWriter qui attend un Stream en paramètre, toute écriture via l'objet StreamWriter écrira dans le flux sous-jacent. Dans le cas présent l'objet FileStream.

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 56
    Par défaut
    En fait je pose la question car j'ai voulu écrire dans le fichier via "StreamWriter" et les envoyer via un "Stream" qui utilise le" FileStream"
    est ce je le peux?

  4. #4
    Membre éprouvé Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut
    il me semble que "StreamWriter" n'est pas un fichier mais justement le flux en question...

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par dingua Voir le message
    En fait je pose la question car j'ai voulu écrire dans le fichier via "StreamWriter" et les envoyer via un "Stream" qui utilise le "FileStream"
    est ce je le peux?
    Si tu veux écrire dans un fichier en utilisant un StreamWriter oui.

    Comme je l'ai dit plus haut, avec le code donné quand tu écriras avec l'objet StreamWriter, cet objet va écrire dans l'objet FileStream. Le FileStream servant à écrire dans un fichier alors tout écriture via le StreamWriter écrira dans le fichier.

    Si je réponds à côté, reformule mieux la chose.

  6. #6
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 56
    Par défaut
    La question qui se présente maintenant (j'ai cru que je la résouds)est:
    comment écrire dans un buffer (à l'intention de l'envoyer) à partir d'un fichier?

  7. #7
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le buffer est un tableau d'octets je suppose (byte[]) ?
    La méthode FileStream.Read lit le contenu du fichier pour l'écrire dans un byte[].

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Par défaut
    Avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FileStream fs = new FileStream("file.txt", FileMode.Open);
    byte[] buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    Tu devrais pouvoir récupérer l'intégralité du contenu de ton fichier dans la variable buffer. Ensuite pour l'envoyer, ça dépends comment tu as besoin de t'y prendre, et ou tu as besoin de l'envoyer.

  9. #9
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Autant utiliser la méthode File.ReadAllBytes à ce moment. Mais si les fichiers à envoyer peuvent être très volumineux, ce n'est plus vraiment valide.

    Après on peut faire un mix. Si le fichier n'est pas "trop" gros, on charge en mémoire tout son contenu avec File.ReadAllBytes avant de l'envoyer. Sinon on lit et on envoie par paquet, pour ne pas surcharger la mémoire.

  10. #10
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 56
    Par défaut
    Oui c'est le même code que je l'ai écrit déjà,mais le buffer est rempli par des zéros.
    Je pense que le problème s'agit de mon utilisation d'un StreamWriter pour écrire dans le FileStream.
    En notant qu'après l'écriture dans le fichier sans l'envoie des données je retrouves bien ce que j'ai écrit;et dans ce cas là je dois ajouter la fermeture du StreamWriter ce que je ne peux pas faire si je veux remplir le buffer par le contenu du FileStream.

  11. #11
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Peut être qu'il se fait tard, mais je dois avouer que je ne comprends rien au problème exposé ainsi. Il faudrait du code pour y voir un peu plus clair.

Discussions similaires

  1. [EJBQL] [CMP] Relation entre deux beans
    Par salome dans le forum Java EE
    Réponses: 1
    Dernier message: 11/07/2005, 23h50
  2. Relation entre les tables
    Par adelyx dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/04/2005, 23h06
  3. Relation entre deux tables
    Par manel007 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/03/2005, 16h54
  4. Relations entre les Paquetages
    Par bran_noz dans le forum UML
    Réponses: 4
    Dernier message: 25/06/2004, 14h05
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo