ファイルを読み込み各行の両端にダブルクオーテーションをつけて保存する方法

このQ&Aのポイント
  • ファイルを読み込んで各行の両端にダブルクオーテーションをつけて保存する方法について教えてください。
  • テキストファイルの各行の両端にダブルクオーテーションをつけるためのプログラムを作成したいです。
  • 自分で考えたコードではうまく保存できなかったため、正しい方法を教えていただきたいです。
回答を見る
  • ベストアンサー

ファイルを読み込み各行の両端にダブルクオーテーションをつけて保存するには?

お世話になります。 テキストファイルを読み込みファイルの各行の両端に"をつけたいのです。たとえば、 今日は友人と焼肉を食べに行った。 雨の中、外を歩くのはつらかったが、 久々に会える友達のため東京まででかけた。 という文があったとしてプログラムを通しての出力結果が "今日は友人と焼肉を食べに行った。" "雨の中、外を歩くのはつらかったが、" "久々に会える友達のため東京まででかけた。" というように出力されるようにしたいのです。 下記のコードを自分で考えてみましたが、テキストファイルに保存がうまくできませんでした。どうすればよろしいでしょうか? 教えてください。お願いします。 Dim Reader As New IO.StreamReader("C:\aa.txt") Do Until Reader.EndOfStream ListBox1.Items.Add(Chr(&H22) & Reader.ReadLine & Chr(&H22)) Loop Reader.Close() Dim dtmStart As DateTime = DateAdd(DateInterval.Second, 10, Now) Do While Now < dtmStart Application.DoEvents() Loop Dim Writer As New IO.StreamWriter("C:\bb.txt") Writer.WriteLine(ListBox1.Text) Writer.Close() End Sub

  • mixiho
  • お礼率41% (251/608)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Public Class Q3456061 Shared Sub Main() 'System.Windows.Formsを読み込むのが面倒くさかったという '個人的な都合でSystem.Collections.Generic.Listに変更 Dim Lines As System.Collections.Generic.List(Of String) Dim ReadFile As String Dim SaveFile As String Lines = New System.Collections.Generic.List(Of String) ReadFile = Q3456061.GetAppPath() & "\Q3456061-1.txt" SaveFile = Q3456061.GetAppPath() & "\Q3456061-2.txt" '普段はUTF-8(BOMあり)で作るが,念のためCodePage 932で作った。 'そのため,コンストラクタに文字符号化方式を指定している。 Dim Reader As System.IO.StreamReader Reader = New System.IO.StreamReader(ReadFile,System.Text.Encoding.GetEncoding(932)) '個人的な都合で,UntilをWhileにさせてもらった。 'http://www.windows-world.jp/ganko/-/46889.html Do While Reader.EndOfStream = false Lines.Add(Chr(&H22) & Reader.ReadLine & Chr(&H22)) Loop Reader.Close() '意図不明。 'Dim dtmStart As DateTime = DateAdd(DateInterval.Second, 10, Now) 'Do While Now < dtmStart 'Application.DoEvents() 'Loop Dim Writer As System.IO.StreamWriter Writer = New System.IO.StreamWriter(SaveFile,false,System.Text.Encoding.GetEncoding(932)) Do While Lines.Count > 0 '元のソースコードにあったListBox1.Textってのが間違いで 'ItemをWriteLineするような気がする。 'それを考慮してDo~Loop内に入れる。ただし、当然Closeは外に出す Writer.WriteLine(Lines(0)) Lines.RemoveAt(0) Loop Writer.Close() '単純にコレをやりたかったならいいが,ファイルフォーマットの仕様作成等に携わるなら, '「文字列として改行や制御文字を含めたい」時や「文字列中に"を含めたい」等の要望も予測しておく必要がある。 End Sub '当方のプログラムの都合上入れてます 'http://dobon.net/vb/dotnet/vb6/apppath.html Shared Function GetAppPath() As String Return System.IO.Path.GetDirectoryName( _ System.Reflection.Assembly.GetExecutingAssembly().Location) End Function End Class '余談 Q3453592も答えようとしたが,APIリファレンスの読み方が解らず、挫折。 '一応setStringで文字列扱いとしてセルに挿入されるみたいだ。 'で,それ以外の数字に関してだが, 'OOo/Excelではセルを右クリックして「セルのフォーマット」/「表示形式」を「文字列」/「テキスト」に '変更するとCSVで保存した時に引用符で括られる。 'ただしExcel[当方2000で検証]では読み込むとき, '標準として読み込むので結局"001"等は1になってしまう。OOoはCSVを開いたときに '各列のフォーマットをテキストに変更することで001という文字列として読み込むことが出来る。 'OOo Basicでの方法がわからなかったので回答してなかったが '・・・って余談のほうが長いような

mixiho
質問者

お礼

ご親切にありがとうございます。 私のしりたかったことがまさに解決しました。 これで停滞していた仕事がはかどります。 ありがとうございました。

関連するQ&A

  • ファイルの作成からその使用に際して

    VB2008Expressでプログラミング中です。 早速ですが、この度ボタンを押すと3種の.txtファイルを作成し、ある文字列をそこに保存する、といったプログラムが必要になったのですが不具合がでて困っています。 sub createfile() IO.file.create("d:\1.txt") IO.file.create("d:\2.txt") IO.file.create("d:\3.txt") end sub private sub button_click()handles button1.click call createfile() Dim Writer As New IO.StreamWriter("d:\1.txt") Writer.WriteLine(Richtextbox1.Text) Writer.Close() Dim Writer As New IO.StreamWriter("d:\2.txt") Writer.WriteLine(Richtextbox2.Text) Writer.Close() Dim Writer As New IO.StreamWriter("d:\3.txt") Writer.WriteLine(Richtextbox3.Text) Writer.Close() end sub といった感じでファイルを作成したらそこにテキストを保存するようにしたいのですが、「ファイルが使用中でアクセスできません」とエラーになります。 いろんなサイトで勉強してみたのですが、いまいち理由がわかりません。どなたか教えていただける方はいませんでしょうか?

  • VB2008 txtファイル保存

    こんにちは、Vb2008を勉強しています。 デスクトップに保存している、TXTファイルに、 フォームで入力したデータを追加保存したいと思い、ネットで調べたり…で 入力しましたが、txtファイルを開いてみると文字化けしてしまします。 Dim writer As System.IO.FileStream = _ System.IO.File.OpenWrite("C:\Users\Desktop\顧客管理.txt") 'SystemWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(writer) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine(TextBox1.Text & "," & TextBox2.Text & "," & TextBox3.Text) 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() writer.Close() 上記の方法で文字化けだったので、またまた、調べて入力しましたが 今度は、改行されず…単純な、データの追加のようになってしまっています。 私は、新しい行に追加できるようにしたいです。 下のコードは文字コードの指定をしたので、保存はできますが、 改行されません。 Dim FileName As String = "C:\Users\Desktop\確認.txt" Dim Writer As IO.StreamWriter Dim Encode As System.Text.Encoding '文字コードにShiftJISを指定。 Encode = System.Text.Encoding.GetEncoding("Shift-JIS") '既に存在するテキストに追加する場合は第2引数をTrueにする。 Writer = New IO.StreamWriter(FileName, True, Encode) Writer.Write(TextBox1.Text & "," & TextBox2.Text) Writer.Close() どなたか、教えていただけませんでしょうか?

  • 配列にtxtファイルの各行を格納する際の問題点の解決法を教えてください。

    お世話になります。vb2005を使用しています。 以下のコードでテキストファイルを各行ごとに配列に格納したのですが 以下のコードだと100行など、あらかじめ指定した数の行でないと 配列に格納できないので読み込んだテキストファイルの行数分だけ 配列に格納するにはどう改善すればよろしいでしょうか? 教えてください。お願いします。 Dim Reader As New IO.StreamReader("C:\list.txt") Dim url(100) As String Dim k As Integer = 0 Do While Not Reader.Peek() = -1 url(k) = Reader.ReadLine k += 1 Loop Reader.Close() Reader = Nothing

  • ファイルに追記していくには?

    お世話になります。 vb2005を使用しております。 Dim Writer As New IO.StreamWriter("C:\VTest.txt") Writer.WriteLine(TextBox1.Text) Writer.Close() for loopでまわすたびにtextbox1の内容がかわるというfor loopの中にこのようなコードを記述しているのですが、これだと追記できず上書きされてしまって困っています。追記する形にするにはどうすればよろしいでしょうか?教えてください。お願いします。

  • VB 配列の内容をファイルに書き込む

    VB2008を使用しています。 stg_bitという配列に一文字ずつ「abc・・・」 のように入っているものを、テキストファイルに出力したいのですが・・・ stg_bitという配列の内容をファイルに書き込みたいのですが、 うまくいきません。 ご教授お願いします!! Dim i As Integer Dim stg_str As String Dim Writer As New IO.StreamWriter("C:sample.txt") Writer.WriteLine(stg_bit) Writer.Close()

  • リストボックスの内容を テキストファイルに出力

    エクセル vba初心者です。 (1)ini fileからデータを取得 (2)その内容のリストボックスに表示 (3)リストボックス内容をテキストボックスに出力 (2)、(3)がわかりません。 なんとなくやってたら余計にわからなくなりました。助けてください。 Private Sub CommandButton1_Click() '読込み(1)を押した時の処理 Dim listbox As String Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile    ListBox1.Clear   Open "C:\filepath.ini" For Input As #n Do While Not EOF(n) Line Input #n, listbox ListBox1.AddItem listbox Loop Close #n End Sub Private Sub CommandButton2_Click() '書込み(1)を押した時の処理  Dim listbox As String Dim strL_Data As String '取得した値 Dim n As Integer n = FreeFile    Open "c:\example.txt" For Output As #n Print #n, strL_Data Close #n End Sub よろしくお願いいたします。

  • テキストファイルを保存しきれない

    いつもありがとうございます。 iniファイルを置換して上書き保存するのですが、置換して保存すると保存後のファイルの最後のほうが切れて保存しきれていませんでした。 保存前→100行 保存後→80行 な感じです。コードが悪いんだと思いますが、どなたか教えていただけないでしょうか。 Dim FileObj13 As Object Dim ListFile13 As String Try FileObj13 = New IO.StreamReader(Foldername & "\CUS\UISetup.ini", System.Text.Encoding.Default) ListFile13 = FileObj13.ReadToEnd() FileObj13.Close() Catch ex As Exception MessageBox.Show("指定のファイルが見つかりません", "エラー", _ MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End Try '置換 ListFile13 = ListFile13.Replace("K", "G") ListFile13 = ListFile13.Replace("C5", "45") 'ファイルを上書きで保存するための指定 Dim writer13 As New System.IO.StreamWriter(Foldername & "\CUSUISetup.ini", False, System.Text.Encoding.Default) writer13.Write(ListFile13) Label2.Text = "完了"

  • VB6.0にてStreamReaderを使用したいのですが、

    VB6.0にてStreamReaderを使用したいのですが、 Dim Reader As New IO.StreamReader("C:\Windows\System32\eula.txt", のコードが赤字でエラーになります。 どう修正すればよろしいでしょうか? ご存知の方教えてください。よろしくお願いします。 Dim strTemp As String Dim Reader As New IO.StreamReader("C:\Windows\System32\eula.txt", System.Text.Encoding.GetEncoding("Shift-JIS")) strTemp = Reader.ReadToEnd msgobox strTemp Reader.Close

  • VB.NET テキストファイルにデータを書き込み

    テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとします。 このテキストファイルに「あいうえお」を先頭に追加で書き込みたいのですが、どうすればいいのでしょうか? あくまで「かきくけこ」を変数化せずファイルに直接、書き込む方法がある場合、教えてください。 'テキストファイルを開いたときの内容 あいうえお かきくけこ ちなみにですが、テキストファイル("c:\test.txt")に「かきくけこ」と全角5文字で1行のデータがあるとして、 末尾に「さしすせそ」を追加で書込みする方法は下記の通りでした。 'ファイルを書き込み用に開く、指定したファイルがない場合は作成する dim fsFile As System.IO.FileStream = _ System.IO.File.OpenWrite("c:\test.txt") 'StreamWriterオブジェクトを作成し、テキストデータが書き込めるようにする Dim sw As System.IO.StreamWriter = _ New System.IO.StreamWriter(fsFile) 'ファイルの末尾に移動する sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) 'データを書き込む sw.WriteLine("さしすせそ") 'ファイルを更新する sw.Flush() 'ファイルを閉じる sw.Close() fsFile.Close() 'テキストファイルを開いたときの内容 かきくけこ さしすせそ

  • .NETで文字列のエンコードの仕方+ファイル操作

    .NETで文字列のエンコードの仕方が知りたいです。 あと、ファイル操作についてわかりやすいホームページを探しています。 '指定したファイルに文字列を追加します Dim filename as String = "test.txt" Dim data as string = "美味ソ溝" System.IO.File.AppendAllText(filename, data, System.Text.Encoding.GetEncoding("euc-jp")) 'これと同じことを以下のStreamWriterでしたいのですが、文字のエンコードの方法がわかりません。どのようにすればうまくいきますか。 Dim filename as String = "test.txt" Dim data as string = "美味ソ溝" Dim fs As System.IO.FileStream = System.IO.File.OpenWrite(filename) Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(fs) sw.BaseStream.Seek(0, System.IO.SeekOrigin.End) '書き込む前にエンコード?? sw.WriteLine(data) sw.Flush() sw.Close() fs.Close()