Question

Je suis nouveau à Visual Basic.NET et je suis en train de jouer avec elle. J'ai un livre qui me dit comment lire un fichier, mais pas comment écrire dans le fichier avec un bouton clic. Tout ce que j'ai est un bouton et une zone de texte nommé fullNameBox. Lorsque je clique sur le bouton, il me donne une erreur d'exception non gérée. Voici mon code:

Public Class Form1
    Sub outputFile()
        Dim oWrite As System.IO.StreamWriter
        oWrite = System.IO.File.CreateText("C:\sample.txt")
        oWrite.WriteLine(fullNameBox.Text)
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        outputFile()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class
Était-ce utile?

La solution

Avez-vous essayé votre application pas à pas dans de voir où l'erreur est? Avec un rapide coup d'œil, il semble que vous pourriez avoir besoin d'utiliser System.IO.File sur la quatrième ligne (oWrite = IO.File ...) au lieu d'IO, mais je n'ai pas essayé de l'exécuter.

Autres conseils

Imports System.IO
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SaveFileDialog1.FileName = ""
        SaveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        SaveFileDialog1.ShowDialog()
        If SaveFileDialog1.FileName.Trim.Length <> 0 Then
            Dim fs As New FileStream(SaveFileDialog1.FileName.Trim, FileMode.Create)
            Dim sr As New StreamWriter(fs)
            sr.Write(TextBox1.Text)
            fs.Flush()
            sr.Close()
            fs.Close()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        OpenFileDialog1.FileName = ""
        OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
        OpenFileDialog1.ShowDialog()
        If OpenFileDialog1.FileName.Trim.Length <> 0 Then
            Dim fs As New FileStream(OpenFileDialog1.FileName.Trim, FileMode.Open)
            Dim sw As New StreamReader(fs)
            TextBox1.Text = sw.ReadToEnd
            fs.Flush()
            sw.Close()
            fs.Close()

        End If
    End Sub
End Class

est un programme fonctionnel complet si vous voulez, il vous suffit de glisser déposer une zone de texte, OpenFileDialog, et un SaveFileDialog. ne hésitez pas à jouer avec le code. profiter
par ailleurs, le problème dans votre code est que vous « devez » filestream à proximité lorsque vous avez terminé de l'utiliser, faisant libérerez toutes les ressources telles que les prises et les descripteurs de fichiers.

Le cadre .net est un cadre très puissant. De la même manière (cependant), il a des méthodes simples et pratiques pour des tâches simples. La plupart des individus ont tendance à compliquer les choses pour la connaissance de l'affichage. Mais moins de code = moins de traitement = application plus rapide et plus efficace (parfois) de sorte que la grande méthode ci-dessus peut ne pas convenir. Parallèlement à cela, la méthode ci-dessus mentionnée serait mieux écrit comme un sous ou si quelque chose de revenir alors une fonction.

My.Computer.FileSystem.WriteAllText("File As String", "TextAsString", Append as Boolean)

Général Exemple serait

My.Computer.FileSystem.WriteAllText("C:\text.text", "this is what I would like to add", False)
  

ce que je voudrais ajouter

peut être modifié au texte actuel d'un champ aussi bien.

Plus spécifique exemple serait

My.Computer.FileSystem.WriteAllText("C:\text.text", fullNameBox.text, True)

Si vous souhaitez comprendre le append du code

  • En définissant append = true vous autorisez l'application à écrire le texte à la fin du fichier, en laissant le reste du texte déjà dans le fichier intact.

  • En définissant append = false vous enlèvera et de remplacer tout le texte dans le fichier existant avec le nouveau texte

Si vous ne vous sentez pas envie d'écrire cette partie du code (si il est petit), vous pouvez créer un sous pour le gérer, mais cette méthode serait légèrement différente, juste pour l'étiquette. fonctionnalité resterait similaire. (Avec StreamWriter )

Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", append as boolean)
        objWriter.WriteLine(textboxname.Text)
        objWriter.Close()
    End Sub

spécifique Exemple serait

Private Sub WriteText()
        Dim objWriter As New System.IO.StreamWriter("file.txt", False)
        objWriter.WriteLine(fullnamebox.Text)
        objWriter.Close()
    End Sub

puis sous l'appel événement Button_Click:

writetext()

Vous pouvez faire un pas de plus ainsi. Si vous souhaitez créer une plus advabced Sub pour gérer toute zone de texte et fichier.

Disons que vous envisagez d'avoir plusieurs fichiers séparés et plusieurs champs pour chaque fichier (si il existe une méthode BEAUCOUP plus élégant propre), vous pouvez créer une fonction. { Je vais vous expliquer le concept derrière la fonction aussi bien que possible pour cet exemple }

ci-dessous est une sous démonstration plus avancée pour votre demande ci-dessus

Private Sub WriteText(Filename As String, app As Boolean, text As String)
        Dim objWriter As New System.IO.StreamWriter(Filename, app)
        objWriter.WriteLine(text)
        objWriter.Close()

End Sub

Qu'est-ce que cela ne nous permet de (sur le même formulaire - si vous en avez besoin global, nous pouvons en discuter une autre fois, ce n'est pas beaucoup plus complexe du tout) appeler la fonction et saisissez les informations nécessaires <. / em>

Sous utilisation -> Exemple général

WriteText(Filename As String, app As Boolean)

Sous utilisation -> Exemple spécifique

WriteText("C:\text.txt, False, fullnamebox.text)

Mais la meilleure partie de cette méthode est que vous pouvez changer cela pour être quelque chose que vous en avez besoin. Disons que vous avez Deux boutons * et ** Deux boîtes vous pouvez avoir le button_event pour le premier bouton déclencheur le code ci-dessus et le second bouton de déclenchement d'un code différent.

Exemple

WriteText("C:\text2.txt, False, halfnamebox.text)

La meilleure partie de la création de vos propres fonctions et sous-marins sont Contrôle Je ne vais pas entrer, car il sera hors sujet, mais vous pouvez vérifier pour être sûr que la zone de texte a d'abord le texte avant l'écriture du fichier. Cela permettra de protéger l'intégrité des fichiers.

Hope this helps! Sites Richard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top