0

私は Visual Basic .NET を初めて使用し、いじっているだけです。ファイルから読み取る方法を教えてくれる本がありますが、ボタンをクリックしてファイルに書き込む方法は教えてくれません。私が持っているのは、ボタンと fullNameBox という名前のテキスト ボックスだけです。ボタンをクリックすると、未処理の例外エラーが発生します。これが私のコードです:

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
4

3 に答える 3

1

アプリケーションをステップ実行して、エラーの場所を確認しましたか? 一見すると、IO だけでなく、4 行目の System.IO.File (oWrite = IO.File...) を使用する必要があるように見えますが、実行しようとはしていません。

于 2010-08-10T05:06:45.517 に答える
0
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

これは、必要に応じて完全に機能するプログラムです。テキストボックス、openfiledialog、およびsavefiledialogをドラッグアンドドロップするだけです。コードを自由に試してみてください。ちなみに、コードの問題は、ファイルストリームを使い終わったら、ファイルストリームを「閉じる」必要があることです
。そうすると、ソケットやファイルハンドルなどのリソースが解放されます。

于 2012-04-29T20:15:32.850 に答える
0

.net フレームワークは非常に強力なフレームワークです。同じように (ただし)、単純なタスクのための簡単で便利なメソッドがあります。ほとんどの人は、知識を示すために物事を複雑にする傾向があります。ただし、コードが少ない=処理が少ない=アプリケーションが高速で効率的であるため(場合によっては)、上記の大きな方法は適していない場合があります。それに加えて、上記のメソッドは、サブルーチンとして記述した方がよいでしょう。または、何かを返す場合は関数を返します。

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

一般的な例は

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

これは私が追加したいものです

フィールドの現在のテキストに変更することもできます。

より具体的な例は

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

コードの追加部分を理解したい場合

  • append = true を設定することで、アプリケーションがファイルの末尾にテキストを書き込むことができるようになり、ファイル内の残りのテキストはそのまま残ります。

  • append = false を設定すると、既存のファイル内のすべてのテキストが削除され、新しいテキストに置き換えられます。

コードのその部分を書きたくない場合 (小さいですが)、それを処理するサブを作成することもできますが、その方法はエチケットのために少し異なります。機能は同じままです。( StreamWriterを使用)

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

具体例は

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

次に、button_click イベント呼び出しの下で:

writetext()

これをさらに一歩進めることもできます。テキストボックスとファイルを処理するために、より高度な Sub を作成したい場合。

複数の個別のファイルと各ファイルに複数のフィールドを用意することを計画しているとしましょう (ただし、はるかにクリーンでエレガントな方法があります) 関数を作成できます。{この例では、関数の背後にある概念をできるだけ詳しく説明します}

以下は、上記のリクエストに対するより高度なサブ デモンストレーションです。

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

これにより、(同じフォームで - グローバルが必要な場合は別の機会に説明できますが、それほど複雑ではありません) 関数を呼び出し、必要に応じて情報を入力できます。

サブユース→一般サンプル

WriteText(Filename As String, app As Boolean)

サブユース -> 特定のサンプル

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

ただし、この方法の最も優れた点は、必要に応じて変更できることです。2 つのボタン* と **2 つのボックスがあるとします。最初のボタンの button_event で上記のコードをトリガーし、2 番目のボタンで別のコードをトリガーすることができます。

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

独自の関数とサブルーチンを作成する上で最も優れているのはControlです。トピックから外れるため、ここでは説明しませんが、ファイルを書き込む前に、テキスト ボックスにテキストが含まれていることを確認できます。これにより、ファイルの整合性が保護されます。

お役に立てれば!リチャード・サイト。

于 2013-02-11T00:41:11.423 に答える