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

VB.NET Discussion :

Mettre un string avec une new line à la fin dans un fichier texte


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut Mettre un string avec une new line à la fin dans un fichier texte
    Bonjour
    J'aimerais savoir comment ajouter du texte dans un fichier en l'insérant dans une nouvelle ligne;
    .
    car le problème c'est que j'utilise writline(string) mais ça ajoute à la suite


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim objwriter As new= system.IO.StreamWriter("test.txt")
    objwriter.WriteLine("nouvelle ligne)"
    Merci

  2. #2
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Tu fais juste ça ? Parce que là il va réécrire par dessus la première ligne...

    Pour être sur de passer à la ligne tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objwriter.WriteLine(vbcrlf & "nouvelle ligne")

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    PAR CONTRE MAINTENANT ça insère une ligne vide, pourquoi?
    C'est quoi le code que je cherche

  4. #4
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Essayes juste avec un
    C'est quoi le code que je cherche
    Bonne question...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    Je ne comprends pas ça marche dans un projet juste dédié à ce code

    Voilà le code qui ne marche pas comme je veux, il ne saut pas de ligne ou si je mets la nouvelle ligne il saut une ligne entière vide:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     'mode écriture avec un nouveau fichier
                Dim objWriter As New System.IO.StreamWriter(CurDir() + Logins.c_s_Path, True)
                'Ecriture de: login + mot de passe crypté + niveau d'accès
                Dim str As String = Tbx_NewLog.Text + "," + Log.Cryptage(Tbx_NewPw.Text) + "," + AccessLevel
                objWriter.Write(str)
                objWriter.Close()   'met à nul l'objet dédié au flux
                'Else
    j'ai cru avoir trouvé en mettant WriteLine à la place de Write mais ça ne marche pas comme je veux

  6. #6
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Mais ton fichier va contenir quelque chose ou pas avant l'écriture ?

    C'est cela qu'il faut tester :
    - Si le fichier est vide, tu ajoutes normalement
    - Si le fichier n'est pas vide, tu lis son contenu, ajoutes ce que tu veux à la fin (en mettant un vbCrLf pour sauter une ligne) et tu réécris tout.

    (Débrouilles toi pour le code, et reviens poster si tu as une erreur )

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    toujours un saut de ligne vide.
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim objWriter As New System.IO.StreamWriter(CurDir() + Logins.c_s_Path, True)
                'Ecriture de: login + mot de passe crypté + niveau d'accès
                Dim str As String = Tbx_NewLog.Text + "," + Log.Cryptage(Tbx_NewPw.Text) + "," + AccessLevel
                'Test si le string à écrire n'est pas vide
                If (str <> "") Then
                    objWriter.WriteLine(vbCrLf)
                    objWriter.WriteLine(str)
                Else
                    Dim objreader As New System.IO.StreamReader(CurDir() + Logins.c_s_Path)
                    objWriter.Write(objreader.ToString + vbCrLf)
                    objWriter.Write(str)
                End If

  8. #8
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Tu ne testes pas la bonne chose :

    Il faut que tu essayes de lire ton fichier s'il existe (il me semble que tu ne le lis pas correctement), si le résultat de la lecture est vide, tu ajoutes normalement, sinon tu ajoutes un vbCrLf à la fin du résultat et tu ajoutes les nouvelles données.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    mon code qui ne marche toujours pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim objreader As New System.IO.StreamReader(CurDir() + Logins.c_s_Path)
                If (objreader.ToString <> "") Then
     
                    objWriter.Write(str)  'str étant un string
                Else
                    objWriter.Write(vbCrLf)
                    objWriter.Write(str)
                End If
    voilà mon dernier code en eniter en plus maintenant j'ai une erreur dans le flux:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
      If (File.Exists(CurDir() + Logins.c_s_Path) = True) Then
                    'mode écriture avec un nouveau fichier
                    Dim objWriter As New System.IO.StreamWriter(CurDir() + Logins.c_s_Path, True)
                    'Ecriture de: login + mot de passe crypté + niveau d'accès
                    Dim str As String = Tbx_NewLog.Text + "," + Log.Cryptage(Tbx_NewPw.Text) + "," + AccessLevel
                    'Test si le string à écrire n'est pas vide
                    Dim objreader As New System.IO.StreamReader(CurDir() + Logins.c_s_Path)
                    If (objreader.ToString = "") Then
                        objreader.Close()
                        objWriter.WriteLine(str)
                    Else
                        objWriter.Write(vbCrLf)
                        objWriter.Write(str)
                    End If
                    objWriter.Close()   'Dmet à nul l'objet dédié au flux
     
                Else
                    Dim objWriter As New System.IO.StreamWriter(CurDir() + Logins.c_s_Path)
                    Dim str As String = Tbx_NewLog.Text + "," + Log.Cryptage(Tbx_NewPw.Text) + "," + AccessLevel
                    'Test si le string à écrire n'est pas vide
                    objWriter.WriteLine(str)
                    objWriter.Close()
     
                End If
    mon programme bogue sur la lecture du fichier (mon fichier étant vide)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim objreader As New System.IO.StreamReader("test.txt")

  10. #10
    Membre éprouvé
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Points : 1 111
    Points
    1 111
    Par défaut
    Bon, je me suis mis à tester du coup
    En effet, le vbCrLf fait un saut de ligne et le vbCr ne fait rien...
    Donc je sais pas trop, et j'ai plus le temps là...je regarderais demain ptetre

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    J'ai réessayé mais toujours pas ce que je voudrais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     Dim str As String = Tbx_NewLog.Text + "," + Log.Cryptage(Tbx_NewPw.Text) + "," + AccessLevel
                Dim result As String = ""
                If File.Exists(CurDir() + Logins.c_s_Path) Then
                    Dim Objreader As New StreamReader(CurDir() + Logins.c_s_Path)
                    result = Objreader.ReadToEnd
                    Objreader.Close()
                End If
     
                Dim objWriter3 As New StreamWriter(CurDir() + Logins.c_s_Path)
                If result.Equals("") Then
                    objWriter3.Write(str)
                Else
                    objWriter3.WriteLine(result & Chr(13) & str)
                End If
                objWriter3.Close()

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    670
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 670
    Points : 1 169
    Points
    1 169
    Par défaut
    Bonjour,
    logiquement, il n'y a pas besoin de ces contrôles conditionnels.
    Si le fichier existe, il peut être remplacé ou recevoir des ajouts. Si le fichier n'existe pas, le constructeur StreamWriter crée un nouveau fichier.

    Ce code devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            Dim str As String = Tbx_NewLog.Text & "," + Log.Cryptage(Tbx_NewPw.Text) & "," + AccessLevel
            'Dim str As String = "Bibi, #'fkj123, true"
     
            Using sw As StreamWriter = New StreamWriter(CurDir() & Logins.c_s_Path, True)
                'Using sw As StreamWriter = New StreamWriter(Application.StartupPath & "\Logins.txt", True)
                sw.WriteLine(str)
                sw.Flush()
                sw.Close()
            End Using
    J'ai testé avec les lignes mises en commentaires et ça fonctionne.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Points : 61
    Points
    61
    Par défaut
    code qui marche:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
            Me.DialogResult = System.Windows.Forms.DialogResult.OK
     
            'Niveau d'accès
            Dim AccessLevel As String = Cbx_AccessLevel.SelectedIndex + 1
     
            Try
                'string à écrire dans le fichier: login + mot de passe crypté converti en string + niveau d'accès
                Dim str As String = Tbx_NewLog.Text + "," + Log.Cryptage(Tbx_NewPw.Text) + "," + AccessLevel
     
                'Ecriture avec mode append=suite àla fin du fichier
                Dim objWriter3 As New StreamWriter(CurDir() + Logins.c_s_Path, True)
     
                'Ecriture du string
                objWriter3.WriteLine(str)
     
                'Fermeture du flux
                objWriter3.Close()
     
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try

    après une bonne nuit de sommeil l'esprit est plus fort

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 21
    Dernier message: 01/04/2014, 21h06
  2. [Batch] Rechercher et renommer une chaine de caractère complexe dans un fichier texte
    Par mrcanardwc dans le forum Scripts/Batch
    Réponses: 11
    Dernier message: 24/06/2011, 13h02
  3. Réponses: 11
    Dernier message: 05/11/2007, 14h38
  4. Réponses: 2
    Dernier message: 29/03/2004, 13h44

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