|
.NET TIPS テキスト・ファイルの内容を簡単に書き込むには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2007/12/06 |
![]() |
|
|
|
「TIPS:ファイルにテキストを書き込むには?」では、テキスト・ファイルにテキスト内容を書き込む方法を紹介した。その方法を実践するには、次の3つのステップが必要だった。
(1)テキスト・ファイルを開く、もしくは作成する
(2)テキスト内容を書き込む
(3)テキスト・ファイルを閉じる
.NET Framework 2.0では、これらのステップを省略して、1つのメソッド呼び出しだけで、テキスト・ファイルにテキスト内容を書き込む方法が提供されている。それが、次の静的メソッド群だ。
(A)File.WriteAllText(String、String、Encoding)メソッド
(B)File.AppendAllText(String、String、Encoding)メソッド
(C)File.WriteAllLines(String、String[]、Encoding)メソッド
( )内はパラメータのデータ型を示す。メソッドの先頭にある“File”はSystem.IO名前空間のクラスで、パラメータにある“Encoding”はSystem.Text名前空間のクラスのオブジェクトである(なお、Encodingオブジェクトの取得方法については「TIPS:Encodingクラスで扱えるエンコーディング名は?」を参考にされたい)。“String[]”は文字列配列を意味する。
いずれも第1パラメータがファイル・パス、第2パラメータはテキスト内容、第3パラメータがテキスト・ファイルの文字エンコードである。要するにいずれのメソッドを呼び出しても、「第1パラメータに指定されたファイルに、第3パラメータの文字エンコード形式で、第2パラメータのテキスト内容をすべて書き込む」という処理を実行する。
もちろん各メソッドには動作の違いがある。
例えば(メソッド呼び出し前に)既存のファイルが存在する場合、(A)のFile.WriteAllTextメソッドは「いったん既存の内容を完全に削除してから、新たにテキスト内容を書き込む」のに対し、(B)のFile.AppendAllTextメソッドは「既存のテキスト内容をすべて残したまま、その末尾にテキスト内容を追記する」仕様になっている。ただし書き込み対象のファイルが存在しない場合には、(A)(B)いずれのメソッドも(動作は同じで)新たにファイルを自動的に作成したうえで、そこにテキスト内容を書き込む仕様である。
また、(C)のFile.WriteAllLinesは、(A)や(B)のメソッドとは違い、(第2パラメータの)文字列配列に格納された各文字列を1行ずつ改行(CR-LF)してファイルに書き出す仕様になっている。なお、既存のファイルが存在する場合は、(A)と同じで、「いったん既存の内容を完全に削除してから、新たにテキスト内容を書き込む」ので、注意してほしい((B)のように追記を行うFile.AppendAllLinesのようなメソッドは提供されていない……)。
以上でメソッドの使い方と動作の違いはご理解いただけただろう。次のコードは、それぞれのメソッドを利用したコンソール・アプリケーションのサンプル・プログラムである。
|
||
| テキスト・ファイルに内容を書き込むサンプル・プログラム(上:C#、下:VB) |
シンプルなコードなので説明は割愛する。実行結果については、コード中のコメントを参考にしてほしい。
ちなみに、VB(Visual Basic 2005)では次のMy機能のメソッドが提供されている。
My.Computer.FileSystem.WriteAllText(String、String、Boolean、Encoding)メソッド
このメソッドでは第3パラメータにBoolean型の値を指定するが、これは「いったん既存の内容を完全に削除してから、新たにテキスト内容を書き込むか」(=False)、「既存のテキスト内容をすべて残したまま、その末尾にテキスト内容を追記するか」(=True)を指定するためのものである。つまり、Falseを指定すれば(A)のFile.WriteAllTextメソッドと同じ動作になり、Trueを指定すれば(B)のFile.AppendAllTextメソッドと同じ動作になる。
そのほかのパラメータは前述のメソッド群と同じで、第1パラメータはファイル・パス、第2パラメータはテキスト内容、第4パラメータが文字エンコードだ。
ちなみに、本稿の処理とは逆の「テキストを読み込む方法」については、「TIPS:テキスト・ファイルの内容を簡単に読み込むには?」で紹介されているので、併せて参照されたい。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:クラス・ライブラリ 処理対象:テキスト・ファイル 使用ライブラリ:Fileクラス(System.IO名前空間) 使用ライブラリ:Encodingクラス(System.Text名前空間) 関連TIPS:ファイルにテキストを書き込むには? 関連TIPS:Encodingクラスで扱えるエンコーディング名は? 関連TIPS:テキスト・ファイルの内容を簡単に読み込むには? |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


