none
Ecriture fichier RRS feed

  • Question

  • Bonjour petite question :

    J'ai un form avec deux boutons et je voudrais que lorsque que l'on clic dessus un fichier texte soit créer et un texte ajouté au fichier selon le bouton  , mais le problème c'est que lorsque je clic sur le premier bouton par exemple le texte est bien ajouté au fichier , mais si apres je clic sur le deuxieme le texte du deuxieme bouton écrase le texte qu'il y avait dans le fichier texte.

     

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim file As New System.IO.StreamWriter("c:\test.txt")
    file.WriteLine(& "test")
    file.Close()
    End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim file As New System.IO.StreamWriter("c:\test.txt")
    file.WriteLine(vbCrLf & "test")
    file.Close()
    End Sub
    D'avance merci pour l'aide

     


    vendredi 20 mai 2011 16:41

Réponses

  • Bonjour,

     

    Je pense que la question est plus comment faire pour ecrire un fichier sur different poste utilisateur comme par exemple C:\folder\folder\fichier.txt (qui pourrais servir a une entreprise)

    et la réponse serait (je pense)

    il y a trois chose a faire avant de creer le fichier a l'endroit voulu

    1. Vérifier l’existence des dossier
    2. Créer le dossier si il n'existe pas
    3. Créer le fichier

     

    Imports System.IO
    
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        If Directory.Exists("C:\Folder\Folder") = True Then
          File.Create("C:\Folder\Folder\fichier.txt")
        Else
          Directory.CreateDirectory("C:\Folder\Folder")
          File.Create("C:\Folder\Folder\fichier.txt")
        End If
      End Sub
    End Class
    

     

     

     


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    lundi 23 mai 2011 07:38
    Auteur de réponse
  • Bonjour Hugo7,

    Le texte est écrasé par défaut. Pour écrire à la suite, il faut définir le paramètre Append de StreamWriter à True:

    Dim file As New System.IO.StreamWriter("c:\test.txt", True) 'ici
     file.WriteLine(vbCrLf & "test")
     file.Close()
    

    L'intruction Using est préférable lors de l'utilisation des StreamWriter/Reader :

    Using file As New System.IO.StreamWriter("c:\test.txt", True)
     file.WriteLine(vbCrLf & "test")
     End Using
    
    Bonne soirée.
    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.

    • Proposé comme réponse TroxsaEditor vendredi 20 mai 2011 19:44
    • Marqué comme réponse Hugo7 samedi 21 mai 2011 07:54
    • Non marqué comme réponse Hugo7 samedi 21 mai 2011 08:20
    • Marqué comme réponse Ciprian Duduiala jeudi 26 mai 2011 06:40
    vendredi 20 mai 2011 19:02
  • Bonjour Hugo

     

    Tu fais la question et la réponse, si tu rajoutes ta réponse devant ta question ça fonctionne, il est normal que le pointeur sâche où se trouve son fichier, il faut le lui écrire. Sinon, si tu veux le mettre dans le répertoire du futur exe (ce qui généralement se fait), on peut utiliser une fonction vb, comme ceci :

     

    Dim p As New System.IO.StreamWriter(CStr(My.Application.Info.DirectoryPath & "\nomFichier.txt"))
    
    

     

    Nota bene, lors du lancement du code pour débuguer, c'est dans le répertoire BIN que ça se passe, sauf indication contraire par toi.

     

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    samedi 21 mai 2011 08:52

Toutes les réponses

  • Bonjour Hugo7,

    Le texte est écrasé par défaut. Pour écrire à la suite, il faut définir le paramètre Append de StreamWriter à True:

    Dim file As New System.IO.StreamWriter("c:\test.txt", True) 'ici
     file.WriteLine(vbCrLf & "test")
     file.Close()
    

    L'intruction Using est préférable lors de l'utilisation des StreamWriter/Reader :

    Using file As New System.IO.StreamWriter("c:\test.txt", True)
     file.WriteLine(vbCrLf & "test")
     End Using
    
    Bonne soirée.
    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.

    • Proposé comme réponse TroxsaEditor vendredi 20 mai 2011 19:44
    • Marqué comme réponse Hugo7 samedi 21 mai 2011 07:54
    • Non marqué comme réponse Hugo7 samedi 21 mai 2011 08:20
    • Marqué comme réponse Ciprian Duduiala jeudi 26 mai 2011 06:40
    vendredi 20 mai 2011 19:02
  • Bonjour Hugo,

     

    Comme a priori tu sais manipuler les fichiers, pour ajouter il faut préciser lors de l'écriture, en fin :

     

    Dim file As New System.IO.StreamWriter("c:\test.txt"), TRUE
    

     

    Cordialement. 

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire

    • Modifié EhJoe vendredi 20 mai 2011 19:04 rajout cordialités
    • Proposé comme réponse EhJoe vendredi 20 mai 2011 20:13
    • Marqué comme réponse Hugo7 samedi 21 mai 2011 07:54
    • Non marqué comme réponse Hugo7 samedi 21 mai 2011 08:20
    vendredi 20 mai 2011 19:04
  • EhJoe il y a une petite erreur :)

     Dim file As New System.IO.StreamWriter("c:\test.txt", True)
    

    une erreur de ")" pas a la bonne place !

     

     

     

     


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    • Marqué comme réponse Hugo7 samedi 21 mai 2011 07:54
    • Non marqué comme réponse Hugo7 samedi 21 mai 2011 08:20
    vendredi 20 mai 2011 20:03
    Auteur de réponse
  • Xavier,

    Oui, mais comme il sait le faire j'indiquais juste le principe...

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    vendredi 20 mai 2011 20:12
  • Merci à tous pour les réponses j'ai un dernier petit problème , j'ai créer un dossier "fichier" dans mon application et je voudrais que le fichier soit placé dans ce répertoire , le problème c'est que si je met
    Dim file As New System.IO.StreamWriter("fichier\test.txt", True)

    il me met l'erreur  "Impossible de trouver une partie du chemin d'accès 'C:\Documents and Settings\admin\mes documents\visual studio 2010\Projects\app1\app1\bin\Debug\fichier\test.txt'. "

     

    D'avance merci

    samedi 21 mai 2011 07:54
  • Bonjour Hugo

     

    Tu fais la question et la réponse, si tu rajoutes ta réponse devant ta question ça fonctionne, il est normal que le pointeur sâche où se trouve son fichier, il faut le lui écrire. Sinon, si tu veux le mettre dans le répertoire du futur exe (ce qui généralement se fait), on peut utiliser une fonction vb, comme ceci :

     

    Dim p As New System.IO.StreamWriter(CStr(My.Application.Info.DirectoryPath & "\nomFichier.txt"))
    
    

     

    Nota bene, lors du lancement du code pour débuguer, c'est dans le répertoire BIN que ça se passe, sauf indication contraire par toi.

     

    Cordialement.

     



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    samedi 21 mai 2011 08:52
  • Bonjour Hugo,

    Je vous propose d'ouvrir un nouveau thread pour un sujet différent de façon à pouvoir retrouver facilement les réponses, lorsque d'autres utilisateurs en auront besoin.

    (Ici, comme le dit EhJoe il faut indiquer le chemin complet, pas besoin de CStr par contre.)

    Bonne journée.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    samedi 21 mai 2011 11:30
  • Merci pour les réponses mais si j'indique le chemin complet du dossier , peut etre que sur un ordinateur utilisateur le chemin ne sera pas le même
    dimanche 22 mai 2011 14:54
  • Exactement, d'où l'utilité de stocker un programme dans les dossiers prévus comme Program Files, Application Data etc...

    Ces dossiers spéciaux peuvent être récupérés via l'énumeration SpecialFolder :

     

    Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles) & "\nomDossierEventuel\nomFichier.exe"
    

     

    Ici pour le dossier Program Files.

    Attention il est nécessaire d'avoir un compte administrateur pour certains dossiers (comme Program Files justement) sous Vista/7

    voir : http://msdn.microsoft.com/fr-fr/library/system.environment.specialfolder%28v=vs.80%29.aspx

    Bonne soirée.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards.
    dimanche 22 mai 2011 17:17
  • Bonjour Hugo,

     

    Si, si tu le mets dans le répertoire de l'exe il y sera toujours, c'est ainsi que je fais mes logiciels.

     

    Pour ma part je trouve logique que pour un programme on trouve aussi ses fichiers créés au même endroit toute la famille, mais sinon voir la réponse de Michel, ou encore, faire une gestion totale sur le fichier avec les boîtes de dialogue.

     

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    dimanche 22 mai 2011 19:34
  • Bonjour,

     

    Je pense que la question est plus comment faire pour ecrire un fichier sur different poste utilisateur comme par exemple C:\folder\folder\fichier.txt (qui pourrais servir a une entreprise)

    et la réponse serait (je pense)

    il y a trois chose a faire avant de creer le fichier a l'endroit voulu

    1. Vérifier l’existence des dossier
    2. Créer le dossier si il n'existe pas
    3. Créer le fichier

     

    Imports System.IO
    
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        If Directory.Exists("C:\Folder\Folder") = True Then
          File.Create("C:\Folder\Folder\fichier.txt")
        Else
          Directory.CreateDirectory("C:\Folder\Folder")
          File.Create("C:\Folder\Folder\fichier.txt")
        End If
      End Sub
    End Class
    

     

     

     


    Cordialement,
    Xavier TALOUR
    Alias Troxsa SendMail
    Voir le profil de Xavier TALOUR sur LinkedIn
    lundi 23 mai 2011 07:38
    Auteur de réponse