- ベストアンサー
ファイルを読み込み各行の両端にダブルクオーテーションをつけて保存する方法
- ファイルを読み込んで各行の両端にダブルクオーテーションをつけて保存する方法について教えてください。
- テキストファイルの各行の両端にダブルクオーテーションをつけるためのプログラムを作成したいです。
- 自分で考えたコードではうまく保存できなかったため、正しい方法を教えていただきたいです。
- みんなの回答 (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での方法がわからなかったので回答してなかったが '・・・って余談のほうが長いような
お礼
ご親切にありがとうございます。 私のしりたかったことがまさに解決しました。 これで停滞していた仕事がはかどります。 ありがとうございました。