テキストファイルにまとめて書き込む (文字列をファイルに保存する) - C#
文字列をファイルに保存するコードを紹介します。
概要
文字列をファイルに保存する場合には、StreamWriterクラスを用います。
コード例
using System.IO;
public void WiteFile(){
string filePath = @"c:\data\text.txt";
string text ="AAA BBB\r\n CCC\r\n";
StreamWriter sw = new StreamWriter(filePath, false, Encoding.ASCII);
sw.Write(text );
sw.Close();
}
StreamWriterのコンストラクタの2番目の引数がAppendフラグになります。上記の例ではfalseに設定されているため、その都度新しいファイルが作成されます。Appendモードにする場合は2番目の引数をTrueに設定します。
エンコーディングを指定して保存する場合
エンコーディングを指定して保存することもできます。
Shift-JISで保存する場合
using System.IO;
public void WiteFile(){
string filePath = "c:\data\text.txt";
string text ="AAA BBB\r\n CCC\r\n";
StreamWriter sw = new StreamWriter(filePath, false, Encoding.GetEncoding("shift_jis"));
sw.Write(text );
sw.Close();
}
StreamWriterのコンストラクタの2番目の引数がAppendフラグになります。上記の例ではfalseに設定されているため、その都度新しいファイルが作成されます。Appendモードにする場合は2番目の引数をTrueに設定します。
プログラム1 : FileStream を利用するコード
UI
下図のフォームを作成します。
コード
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TextFileBulkWrite
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
label1.Text = saveFileDialog1.FileName;
FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.CreateNew);
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("shift_jis"));
sw.Write(textBox1.Text);
sw.Close();
fs.Close();
}
}
}
}
解説
ファイルを保存ダイアログを開きます。ダイアログでファイルが設定された場合に、if文内が実行されます。
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
/* 中略 */
}
選択されたファイルのファイル名をLabelに表示します。FileStreamを用いて選択されたファイルを開きます。開いたストリームから、ファイルに書き込むためのStreamWriterを作成します。ファイル書き込み時のエンコーディングはShift-JISとします。
label1.Text = saveFileDialog1.FileName;
FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.CreateNew);
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("shift_jis"));
StreamWriterの
Write()
メソッドを呼び出し、テキストボックスに入力された文字列を書き込みます。
書き込み後に、StreamReaderとFileStreamを閉じます。
sw.Write(textBox1.Text);
sw.Close();
fs.Close();
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
テキストボックスに文字列を入力します。
[button1]をクリックします。[名前を付けて保存]ダイアログが表示されます。ファイル名を設定して保存します。
保存できるとファイルが作成されます。
作成されたファイルをメモ帳で確認します。テキストボックスに入力した文字列が保存されていることが確認できます。
プログラム2 : StreamWriter のみを利用する場合
Windows Formアプリケーションを作成します。
UI
下図のフォームを作成します。Button、複数行noTextBox、saveFileDialogを配置します。今回のプログラムでは[button2]のみを利用します。
コード
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace TextFileReadWrite
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
string file = saveFileDialog1.FileName;
StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding("utf-8"));
sw.Write(textBox1.Text);
sw.Close();
}
}
}
}
解説
saveFileDialogを表示し、保存するファイル名を選択します。ファイルが選択された場合はShowDialogメソッドの戻り値が
DialogResult.OK
になりif文のブロックが実行されます。
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
}
saveFileDialog で選択されたファイル名を FileNameプロパティから取得します。StreamWriterクラスのインスタンスを作成しファイルを開きます。
string file = saveFileDialog1.FileName;
StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding("utf-8"));
StreamWriter クラスの
Write()
メソッドを呼び出して、ファイルからテキストをまとめて書き込みます。
sw.Write(textBox1.Text);
ファイルの書き込み完了後、ファイルを閉じます。
sw.Close();
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
テキストボックスに文字列を入力します。
[button2]をクリックします。ファイルを保存するダイアログが表示されます。保存するファイル名を設定します。
ファイルが作成されます。
メモ帳でファイルを開いてみます。テキストボックスに入力した文字列がファイルに保存できていることが確認できます。
テキストファイルを保存できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
- まとめて処理
- 行ごとの処理
- FileStraeamの利用サンプル