忘れる前に覚書。優しい文章を目指します。
ザ・覚書 ザ・覚書
出来るだけ子供にも、わかりやすいように書いて行きたいと思います。

PCバージョンでサイトを表示しています。
【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?

C# ファイルオープン・1行ずつ読み込み・書き込み・クローズ

☆C# ファイルオープン・1行ずつ読み込み・書き込み・クローズ
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る

VCのAPIでウィンドウ関係の画面周りを作るのが面倒なので
C#のデザイナモードで、あるプログラムを作ってみる事にしました。
その時、色々遊んだ時のものです。

C#は知りませんでしたので、基礎からです。
やっぱり普通のCと関数(クラス)が違うので知らないと出来ないようです。
知っているか知らないかという話で、ロジックを考えるのは一緒でしょうけど。

以下のソースは、実行した時に
読み込みファイルを文字コードUTF-8で開いて、1行ずつ読んで、
溜めて行って、7行目の後に文字「追加してみる」を追加して、閉じて、
書き込みファイルを文字コードUTF-8で開いて、
溜めたのを書いて、閉じる、ついでにアプリも終了。

という行動をするプログラムです。


基礎のプログラムですけど、すぐ忘れるのでメモっておきます。

ちなみにフォームにボタンを1個置いて、その中で遊びました。

C#の基礎メモになります。

読み込みファイル(list.txt)の中身は、こんなのです。


テキスト1
テキスト2
テキスト3
テキスト4
テキスト5
テキスト6
テキスト7
テキスト8
テキスト9
テキスト10



ファイルのIOの為に、上に、以下がいると思います。

using System.IO;

ソース
説明は、コメントを見て下さい。

        private void button1_Click(object sender, EventArgs e)
        {

            int icounter = 0;               // 何行目を読んでいるか?
            string stZenbu = string.Empty;  // 出力内容を格納
            string stBuffer;                // バッファ

            // 一応BACKUP
            System.IO.File.Copy(@"list.txt", @"バックアップlist.txt", true);

            //--------------------------
            //--- オープンと読み込み ---
            //--------------------------
            // ファイルオープン 今回はUTF-8で
            StreamReader srFILE = new StreamReader(
                 @"list.txt", Encoding.GetEncoding("UTF-8"));

            icounter = 1;

            // ファイル内容をすべて読む
            for (;;)
            {
                if (srFILE.EndOfStream)  // EOFになったら
                {
                    // 読み込みを終了 forを抜ける
                    break; 
                }

                // ファイルを1行ずつ読み込む
                stBuffer = srFILE.ReadLine();

                // 読み込んだものを追加で格納する + "\r\n" 
                stZenbu += stBuffer + System.Environment.NewLine;

                // 真ん中に行を追加したいならしたりする
                if (icounter == 7) // たとえば7行目の後
                {
                    stBuffer = "追加してみる";
                    stZenbu += stBuffer + System.Environment.NewLine;
                }
                icounter++;
            }
            // ファイルクローズ
            srFILE.Close();

            //--------------------------
            //--- ファイルの書き込み ---
            //--------------------------
            Encoding UTF_8 = Encoding.GetEncoding("UTF-8"); // 今回はUTF-8で

            // 書き込みファイルオープン 今回はUTF-8で
            StreamWriter swFile =
              new StreamWriter(@"listR.txt", false, UTF_8);

            // 今まで溜めたのを書き込み
            swFile.Write(stZenbu);

            // ファイルクローズ
            swFile.Close();

            //アプリケーションを終了する
            Application.Exit();

        }



これを実行すると、
書き込みファイル(listR.txt)の中身は、こんなのです。


テキスト1
テキスト2
テキスト3
テキスト4
テキスト5
テキスト6
テキスト7
追加してみる
テキスト8
テキスト9
テキスト10



うまく行きました。
喜ばしい。





・気が付いた事など


普通にfopenとかしたいなあ。

なんか知りませんが、ファイル名の前に@がいるようです。
階層フォルダじゃなければ、@がなくても読め、
階層フォルダだと、@がないと読めない。
とりあえず付けて置く。

[手こずった事メモ]
ちゃんと仕様とか読まずに作ったので、
1つ、はまった事がありました。

なぜか、書き込みファイルの最後に改行が1行追加されるという事です。
結局、ああでもないこうでもないを経由でして、
その時の原因は、

// 今まで溜めたのを書き込み
swFile.WriteLine(stZenbu);


と、Writeではなく、WriteLineとしてしまった事で、
最後に改行を追加してしまっていたようです。


WriteとWriteLineの違いは、
Write:書き込んだ後に改行(¥r¥n)を入れない
WriteLine:書き込んだ後に改行(¥r¥n)を入れる
の違いでした。

そして、Writeに変更して

// 今まで溜めたのを書き込み
swFile.Write(stZenbu);



問題なしになりました。


記述:2015年08月頃





Twitter Facebook Google+ はてな Pocket LINE




一言掲示板です。なにかありましたら以下に書いて書き込みボタンを押して下さい。
管理人による書き込みの確認後、荒らし書き込みでない場合に表示させていただきます。
悪意ある書き込みや挑発的な書き込みと思われる内容は、表示させません。
その為、ちょっと書き込みから表示までに時間がかかってしまいます。ご了承下さい。

お名前

コメント




ファイル関連
C言語 ファイルオープン・クローズ
乱数
C言語 乱数発生関数例
Bitで遊ぶ
C言語 1バイトの数値内の何ビット目に1があるか返す関数例
C言語 1バイトの数値内の指定ビットの値を返す関数例
C言語 1バイトの数値内の指定ビットの値を1にする関数例
C言語 1バイトの数値内の指定ビットの値を0にする関数例
C言語 1バイトにいろいろな状態を入れてみる例
文字列操作
C言語 整数値を文字列に変換する関数例
C言語 ”ダブルコーテーションを文字列として扱う場合
C言語 CSVファイル形式のファイル内容を読み込む関数例
C言語 strtokでは連続トークンを正しく読み込まない
VisualC
C言語 とにかく自力でウィンドウ
C言語 UTF-8のファイル操作
その他
メモリリーク GDI関連のチェック方法
作ってみたアプリ
BMPの部分保存をするアプリ「ビットマップファイル部分取得」
16進数を自動加算してテキスト出力するアプリ
テキストファイル(txt)を字幕ファイル(srt)に変換するアプリ
C#
C# ファイルオープン・1行ずつ読み込み・書き込み・クローズ
C#のEXEは、中のソースコードのロジックを簡単に見られてしまうかも知れない
【ザ・覚書 3クリックアンケート実施中】
暑さの一番の原因はなんだと思いますか?
あなたの支持する政党はどの党ですか?

今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ