テキストファイルに1行ずつ書き込む

テキストファイルに1行ずつ書き込むコードを紹介します。

概要

テキストファイルを開き、ファイルに1行ずつ書き込みます。 今回紹介するコードは、ファイル内容を1行ずつ書き込むため、行ごとに処理をする場合において利用しやすいコードです。 半面、行数の多いテキストを書き込む場合は時間がかかります。

サイズの大きいテキストを短時間で書き込む場合は、一度にまとめて書き込みます。まとめてファイルに書き込むコードついては、 こちらの記事を参照してください。

実装

テキストファイルに1行ずつ書き込む場合はStreamWriterクラスのWriteLineメソッドを用います。
WriteLineで書き込んだ場合は改行コードが含まれます。

プログラム

Windows Formアプリケーションを作成します。

UI

下図のフォームを作成します。
テキストファイルに1行ずつ書き込む:画像1

コード

下記のコードを記述します。

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 TextFileSingleWrite
{
  public partial class FormDefaultEncoding : Form
  {
    public FormDefaultEncoding()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
        label1.Text = saveFileDialog1.FileName;

        string file = saveFileDialog1.FileName;
        StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding("SHIFT_JIS"));

        string[] lines = textBox1.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);

        for (int i = 0; i < lines.Length; i++) {
          sw.WriteLine(lines[i]);  
        }

        sw.Close();
      }
    }
  }
}

解説

ファイルを保存するダイアログを開きます。ダイアログでファイルが選択された場合に、if文内が実行されます。

  if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
    /* 中略 */
  }


選択されたファイル名をLabelに表示します。また、StreamWriterを利用してファイルを開きます。

  label1.Text = saveFileDialog1.FileName;

  string file = saveFileDialog1.FileName;
  StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding("SHIFT_JIS"));


今回は1行ごとにファイルに書き込むためテキストボックスに入力された文字列を行ごとに分割します。分割はSplitメソッドを利用します。 Splitメソッドの詳細についてはこちらの記事を参照して下さい。

  string[] lines = textBox1.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None);


テキストをファイルに書き込みます。1行ずつ処理をするため、StreamWriterクラスのWriteLine()メソッドを呼び出し、 1行ずつファイルに書き込みます。

  for (int i = 0; i < lines.Length; i++) {
    sw.WriteLine(lines[i]);  
  }


すべての処理が終了したらファイルを閉じます。

  sw.Close();

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
テキストファイルに1行ずつ書き込む:画像2

テキストボックスに文字列を入力します。
テキストファイルに1行ずつ書き込む:画像3

[button1]をクリックします。[名前を付けて保存]ダイアログが表示されます。保存するファイル名を設定して、[保存]ボタンをクリックします。
テキストファイルに1行ずつ書き込む:画像4

ファイルが保存できると、ファイルが作成されます。
テキストファイルに1行ずつ書き込む:画像5

メモ帳で保存されたファイルの内容を確認します。テキストボックスに入力した文字列がテキストファイルに保存されていることが確認できます。
テキストファイルに1行ずつ書き込む:画像6

テキストの保存ができました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2020-05-25
Copyright © 1995–2025 iPentec all rights reserverd.