テキストファイル入出力についてです

タグの編集
投稿者 さんさん  (社会人) 投稿日時 2021/11/17 14:04:45
テキストファイルの内容入出力での質問です。
a = "あああ" string
b = "いいい" string
c = 100 integer
上記のような変数があり、これをFileOpen(Output)を使用してテキストファイルに書き込みました。
書込み後のテキストファイルの内容は、

"あああ","いいい",100 [改行]    
    
という内容になっています。
この内容をある変数へ読み出すと(FileOpenのLineInput)、

"""あああ"",""いいい"",100"   

というようなダブルクォーテーションが前後に追加され、また文字列の「あああ」「いいい」にもダブルクォーテーションが追加された状態になっていしまいます。
このあとの作業で"あああ","いいい",100はそれぞれ配列に格納していきたいのですが、ダブルクォーテーションが邪魔になっています。何か綺麗に入力・出力するやり方はあるでしょうか?(vb.netです)

投稿者 るきお  (社会人) 投稿日時 2021/11/17 20:28:04
つまり、こういうプログラムを書かれているわけですね?
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim a As String = "あああ"
    Dim b As String = "いいい"
    Dim c As Integer = 100

    Dim fno As Integer = FreeFile()
    FileOpen(fno, "C:\temp\test1.txt", OpenMode.Output)

    Write(fno, a)
    Write(fno, b)
    WriteLine(fno, c)

    FileClose(fno)

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

    Dim fno As Integer = FreeFile()
    FileOpen(fno, "C:\temp\test1.txt", OpenMode.Input
    Dim line As String = LineInput(fno)
    FileClose(fno)

    Dim myArray As String() = line.Split(",")

End Sub


>このあとの作業で"あああ","いいい",100はそれぞれ配列に格納していきたいのですが、ダブルクォーテーションが邪魔になっています。何か綺麗に入力・出力するやり方はあるでしょうか?

たとえば、次のようにしてできます。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

    Dim a As String = "あああ"
    Dim b As String = "いいい"
    Dim c As Integer = 100

    Using writer As New IO.StreamWriter("C:\temp\test2.txt")
        writer.Write(a & vbTab)
        writer.Write(b & vbTab)
        writer.WriteLine(c)
    End Using

End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

    Dim line As String
    Using reader As New IO.StreamReader("C:\temp\test2.txt")
        line = reader.ReadLine
    End Using

    Dim myArray As String() = line.Split(vbTab)

End Sub


FileOpenやこれに関連したファイル読み書きは20年以上前の機能との互換性のためにあり、まず使うものではありません。
ファイルの読み書きにはこの例のようにStreamWriterやStreamReaderを使うなどします。(他の方法もあります。)
ご質問の件は、これで都合よく解決するようです。

ファイルの読み書きの書き方はいろいろあって、JSONやXMLを活用すると効率的になる場合もあります。

また、今回の件、何のために値を保存して、何のためにそれを読み込んで配列に格納するのか、その目的によってはもっと全然別のアプローチもあるかもしれないなと思いました。

さんさんさんに1つお願いしたいのは、回答者の手間を省くために、現在のプログラムを投稿に乗せていただきたいということです。
回答者はさんさんさんが現状どういうプログラムを作っているのか推測するところから始める必要があります。私も今回まずさんさんさんのプログラムを復元することを最初にやりました。
本当は復元したなくてもさんさんさんが投稿してくれればこの手間をかける必要はありませんでした。

推測の必要がなかったり、手間がないように投稿されると、回答者は回答に集中できるので良い回答に巡り合う可能性が高くなります。これですとお互いウィンウィンというわけです。
投稿者 さんさん  (社会人) 投稿日時 2021/11/21 00:27:06
るきお様
お返事ありがとうございます。解決することができました。
質問文の件、言葉足らずそして質問の仕方が悪くお手間をかけさせてしまい申し訳ございませんでした。
次からはもう少し回答者様に分かりやすい質問文を心がけていきます。ありがとうございました。