.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」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|