2012年7月7日土曜日

C# ファイルの読み込み&書き込み

c#でファイルを読み込み&書き込み。


[コード]
using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

class Sample
{
    [STAThread]
    public static void Main()
    {
        Application.Run(new MainForm());
    }
}

class MainForm : Form
{
    private TextBox tBox = new TextBox();
    private Button btRead = new Button();
    private Button btWrite = new Button();
    private string path = "test.txt";

    public MainForm()
    {
        tBox.Text = "";
        tBox.Dock = DockStyle.Top;
        tBox.Multiline = true;
        tBox.Height = 100;
        tBox.ScrollBars = ScrollBars.Both;

        btRead.Text = "読み込み";
        btRead.AutoSize = true;
        btRead.Location = new Point(tBox.Left, tBox.Bottom + 10);

        btWrite.Text = "書き込み";
        btWrite.AutoSize = true;
        btWrite.Location = new Point(btRead.Right + 3, tBox.Bottom + 10);

        this.Controls.Add(tBox);
        this.Controls.Add(btRead);
        this.Controls.Add(btWrite);

        btRead.Click += new EventHandler(btRead_Click);
        btWrite.Click += new EventHandler(btWrite_Click);
    }
    public void btRead_Click(object sende, EventArgs e)
    {
        StreamReader sr = new StreamReader(path, 
            System.Text.Encoding.GetEncoding("shift_jis"));
        tBox.Text = sr.ReadToEnd();
        sr.Close();
    }
    public void btWrite_Click(object sende, EventArgs e)
    {
        StreamWriter sw = new StreamWriter(path, 
            false, 
            System.Text.Encoding.GetEncoding("shift_jis"));
        sw.Write(tBox.Text);
        sw.Close();
    }
}


[説明]
ファイルの読み込みには、「StreamReaderクラス」を利用します。

上のサンプルコードでは、StreamReaderのインスタンス生成時に「パス」と「文字エンコーディング」を指定。文字化けする場合は、文字エンコーディングの指定が必要。

実際に読み込んでいるのは、「ReadToEndメソッド」。このメソッドは、一度でファイルの内容をすべて読み込むときに利用する。ReadToEndメソッドのほかにも「ReadLineメソッド」などがある。



ファイルの書き込みには、「StreamWriterクラス」を利用します。
書き込みには「Writeメソッド」や「WriteLineメソッド」などを使う。