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

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


  スポンサーリンク


Amazonで『プログラミング C#』を検索
今のページの関連ページのリストへ
ザ・覚書のトップページに戻る
全ページのリストへ

プログラミングC# 第7版

実戦で役立つ C#プログラミングのイディオム/定石&パターン

猫でもわかるC#プログラミング 第3版 (猫でもわかるプログラミング)

猫でもわかるWindowsプログラミング C#版 猫でもわかるシリーズ

C#プログラミングの冒険 [実践編]――ただ書けるだけじゃ物足りない!!

猫でもわかるC#プログラミング 第2版 猫でもわかるシリーズ
amazonで検索
商品更新日時:
2017/03/29 20:09:37

イチから学ぶプログラミング(日経BP Next ICT選書)【電子書籍】

12歳からはじめるゼロからのC言語ゲームプログラミング教室【電子書籍】[ 大槻有一郎 ]

プログラミング20言語習得法【電子書籍】[ 小林健一郎 ]

TECHNICAL MASTER はじめてのASP.NET 4 プログラミング Visual C#編【電子書籍】[ WINGSプロジェクト 土井毅 ]

【電子合本版】Code Complete 第2版 完全なプログラミングを目指して【電子書籍】[ Steve McConnell ]

プログラミングは最強のビジネススキルである【電子書籍】[ 松林 弘治 ]
楽天ウェブサービスセンター
商品更新日時:
2017/03/29 20:09:37

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

(新機能)URLの書き込みも可能にしましたが、内容と関係のないリンクの表示はしないと思います。
また自サイトへのリンクURL書き込みの場合、相互リンクもお願い致します。
お名前

コメント






本日、よく見られるページ
コピペ用 都道府県一覧
家庭用の普通のコンセントは、何Wまで使えるのか?
「~をば」ってどういう意味?
木材の引き戸の滑りを良くする方法
労働者が、会社を訴える時の手続き方法
「忖度(そんたく)」とはどういう意味か?
ガンダム世界の世界地図とコロニーとかの位置
春の旬野菜といえばなに?
コンピューターの開始時にページングファイル構成に問題が発生 対処法の1つ
水道の止水栓(元栓)が硬くて回らない時
  スポンサーリンク

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