none
Manipulation de fichiers texte. RRS feed

  • Question

  • Bonjour,

    je suis en train de coder un petit utilitaire me permettant de lancer une commande shell et d'écrire une partie du résultat dans un fichier texte.

    voici la partie me permettant d'écrire dans un fichier texte :

    Imports System
    Imports System.IO
    Imports System.Text
    
    Dim NomPoste As String
    
    NomPoste = My.Computer.Name
    
    System.IO.File(fichierDestination, vbNewLine & NomPoste, True)

    Et pour créer mon fichier texte j'utilise :

    System.IO.File.Create(cheminApp & nomFichier & ".txt")

    Le problème que j'ai c'est que lorsque je créer un fichier, je ne peux pas écrire dedans directement car il est utilisé par le processus de l'application.

    Pour écrire dedans je doit quitter l'application et la relancer.

    Comment puis-je remédier à ceci afin de ne pas faire cela ?

    Merci d'avance.

    vendredi 22 février 2013 14:57

Réponses

  • Bonjour Jihem_B,

    Pas vraiment compris la question. Mais écriture dans fichier texte m'orienterai vers StreamWriter , que je fermerai avant le lancement de l’application et ré-ouvrirai après :

    Imports System.IO
    
    Public Class Form1
        Dim sw As StreamWriter
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            sw = New StreamWriter("c:\Log.txt", True)
    
            sw.WriteLine("aaaaaaaaa")
            sw.WriteLine("bbbbbbbbb")
            sw.WriteLine("ccccccccc")
    
        End Sub
    
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            sw.Close()
            Shell("cmd.exe /c dir >> c:\Log.txt", AppWinStyle.Hide, True)
            sw = New StreamWriter("c:\Log.txt", True)
        End Sub
    
        Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
            sw.WriteLine("xxxxxxxxx")
            sw.WriteLine("yyyyyyyyy")
            sw.WriteLine("zzzzzzzzz")
            sw.Close()
        End Sub
    End Class
    


    Cordialement, Jacques

    • Proposé comme réponse TroxsaEditor lundi 25 février 2013 18:26
    • Marqué comme réponse Aurel Bera mercredi 27 février 2013 08:52
    vendredi 22 février 2013 17:15
  • Bonjour,

    Toujours commencer par consulter la doc : http://msdn.microsoft.com/fr-fr/library/d62kzs03.aspx indique que la fonction File.Create retourne un filestream donc si on utilise la fonction Create en ignorant sa valeur de retour et que l'on essaie ensuite d'ouvrir le fichier, on essaye effectivement de l'ouvrir une 2ème fois...

    Donc utiliser la valeur de retour pour écrire dans le fichier nouvellement créé...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Aurel Bera mercredi 27 février 2013 08:53
    vendredi 22 février 2013 17:23
    Modérateur

Toutes les réponses