HIRO [著] 2009/03/09 14:00

 Windows PowerShellでテキストファイルを取り扱うには、標準のコマンドレットであるAdd-Content, Get-Content, Set-Contentなどを使用します。これ以外にも.NET Frameworkのクラスを利用することが可能です。今回はWindows PowerShellで.NET Frameworkライブラリによるファイルの読み書きについて説明します。

1 2 3 →

はじめに

 Windows PowerShellでテキストファイルを取り扱うには、標準のコマンドレットであるAdd-Content, Get-Content, Set-Contentなどを使用します。これ以外にも.NET Frameworkのクラスを利用することが可能です。

 今回はStreamReader(ファイルの読み込み)クラスとStreamWriter(ファイルの書き込み)クラスを通して、.NET Framworkオブジェクトの操作とファイル操作について学んでいきたいと思います。

ファイルの読み込み

 .NET Frameworkのクラスでファイル読み込みを行うには、StreamReaderクラスを使用します。

 StreamReaderクラスは直接利用することはできないため、下記のようにNew-Objectコマンドレットを使用してインスタンスを作成する必要があります。

PS> $sr = New-Object System.IO.StreamReader("C:\Work\Test1.txt")

 エンコーディングを指定してファイルを読み込む場合には、下記のようにしてインスタンスを作成します。

PS> $sr = New-Object System.IO.StreamReader("C:\Work\Test1.txt", [System.Text.Encoding]::UTF8)

 インスタンスを作成した後は、変数$srを通してStreamReaderクラスのメソッドやプロパティにアクセスすることができます。エンコーディングに指定できる値については、MSDNの『Encodingプロパティ』を参照ください。またStreamReaderクラスにはこのほかのコンストラクタもありますので、MSDNの『StreamReaderコンストラクタ』を参照ください。

現在のエンコードを確認する

 CurrentEncodingプロパティにアクセスすると、現在のエンコードを確認することができます。

PS> $sr.CurrentEncoding

 結果を見ると複数のプロパティ値が表示されていることがわかります。

 エンコードを確認できるプロパティはいくつかありますが、この中のEncodingNameを見るとこのファイルのエンコードがUnicode(UTF-8)であることが分かります。下記のように入力すれば、EncodingNameだけを表示させることができます。

PS > $sr.CurrentEncoding.EncodingName

 このように、プロパティやメソッドがさらにメンバ(プロパティやメソッド)を持っている場合にはドット(.)で数珠つなぎにしてアクセスすることができます。

Tab補完

 ここで作成したStreamReaderクラスのインスタンス変数$srに対して、Tab補完を行うことができます。

 コマンドライン上で「$sr.」と入力して[Tab]キーを押していくとアクセス可能なメンバが表示されます。

 試しに「$sr.C」まで入力した状態で[Tab]キーを押していくと 「$sr.CurrentEncoding, $sr.Close(, $sr.CreateObjRef(」と表示が切り替わっていきます。

ストリームを閉じる

 StreamReaderは、使用後に必ずCloseメソッドを実行して閉じる必要があります。この操作を忘れると、StreamReaderで開いたファイルはPowerShellがつかんだままとなってしまいます。PowerShellを終了すればファイルは解放されますが、使用後は必ずCloseメソッドを実行するようにしてください。

PS> $sr.Close()

1 2 3
→
INDEX
Windows PowerShell 活用編(6) .NET Frameworkによるファイルの読み書き
Page1
はじめに
ファイルの読み込み
ファイルの書き込み
まとめ
プロフィール
HIRO ヒロ

HIRO's.NETのHIROです。
とある半導体工場のSEです。
VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。
最近はBlog でPowerShellについて書いています。

2008/07/07にPowerShell from Japan!!というサイトを立ち上げました。PowerShellユーザーが集まってブログを書いています。よろしかったら来てください。

HIRO's.NET Blog
HIRO's.NET - VB.NET, C#, PowerShell Tips -
PowerShell from Japan!!


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト