文字コードを指定してテキストファイルに書き込むストリームを使ってテキストファイルに書き込むStreamWriterクラスを用いた簡単な例を示します。次の例ではテキストボックスTextBox1の内容をテキストファイル"C:\test.txt"に書き込んでいます。ここではShift JISコードで保存します。 [VB.NET] 'StreamWriterの初期化 'ファイルを上書きし、Shift JISで書き込む '2番目のパラメータをTrueにすると、上書きせずにファイルの末尾に追加 Dim sw As New System.IO.StreamWriter("c:\test.txt", _ False, _ System.Text.Encoding.GetEncoding(932)) 'TextBox1.Textの内容をすべて書き込む sw.Write(TextBox1.Text) '閉じる sw.Close() [C#] //StreamWriterの初期化 //ファイルを上書きし、Shift JISで書き込む //2番目のパラメータをTrueにすると、上書きせずにファイルの末尾に追加 System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\test.txt", false, System.Text.Encoding.GetEncoding(932)); //TextBox1.Textの内容をすべて書き込む sw.Write(TextBox1.Text); //閉じる sw.Close(); そのほかの文字コード(JIS、EUCなど)で保存する時は、適当なEncodingを指定します。Encodingに関しては「文字コードを指定してテキストファイルを読み込む」を参考にしてください。なおEncodingを省略した時は、UTF-8となります。 補足:Writeメソッドを呼び出してすぐにデータがファイルに書き込まれるとは限りません。Flashメソッドを呼び出すことにより、書き込まれます。CloseメソッドでもFlashが呼び出されます。AutoFlushプロパティをTrueにすることにより、Writeを呼び出した時にFlashが呼び出されるようになります。 補足:StreamWriterはFileShare.Readとしてファイルを開くようです。よって、StreamWriterで開いているファイルは、別のプロセスからは読み込みは可能でも、書き込みはできません。またバッファのサイズは4096(0x1000)バイトとなるようです。 補足:.NET Framework 2.0以降のVB.NETでは、My.Computer.FileSystem.OpenTextFileWriterメソッドで同じことができます。 一行ずつ書き込む一行書き込むには、WriteLineメソッドを使います。WriteLineで書き込むと、最後に自動的に改行文字列を挿入します。改行文字列は、NewLineプロパティで指定されている文字列になります(デフォルトで、「キャリッジリターン+ラインフィード」です)。 [VB.NET] 'StreamWriterの初期化 'ファイルを上書きし、Shift JISで書き込む Dim sw As New System.IO.StreamWriter("c:\test.txt", _ False, _ System.Text.Encoding.GetEncoding(932)) '「こんにちは」を10行書き込む Dim i As Integer For i = 0 To 9 sw.WriteLine("こんにちは") Next i '閉じる sw.Close() [C#] //StreamWriterの初期化 //ファイルを上書きし、Shift JISで書き込む System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\test.txt", false, System.Text.Encoding.GetEncoding(932)); //「こんにちは」を10行書き込む for (int i = 0; i < 10; i++) { sw.WriteLine("こんにちは"); } //閉じる sw.Close(); .NET Framework 2.0以降で、ストリームを使わずに簡単に書き込む.NET Framework 2.0からは、File.AppendAllTextメソッドにより、指定されたファイルに、指定した文字列を追加書き込みすることができます。指定したファイルが存在しなければ、新しく作成されます。 以下にAppendAllTextメソッドにより、テキストファイルに文字列を書き込む例を示します。 [VB.NET] '追加書き込み先のテキストファイル 'なければ、作成される Dim textFile As String = "C:\text.txt" '文字コード(ここでは、Shift JIS) Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(932) '書き込む文字列 Dim str As String = "こんにちは。" + vbCrLf 'textFileの末尾にstrを書き加える System.IO.File.AppendAllText(textFile, str, enc) [C#] //追加書き込み先のテキストファイル //なければ、作成される string textFile = "C:\\text.txt"; //文字コード(ここでは、Shift JIS) System.Text.Encoding enc = System.Text.Encoding.GetEncoding(932); //書き込む文字列 string str = "こんにちは。\r\n"; //textFileの末尾にstrを書き加える System.IO.File.AppendAllText(textFile, str, enc); 補足:.NET Framework 2.0以降のVB.NETでは、My.Computer.FileSystem.WriteAllTextメソッドで同様のことができます。ただしWriteAllTextは追加書き込みだけでなく、上書きを指定することもできます。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|