Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Windows PowerShell 活用編(6)
.NET Frameworkによるファイルの読み書き

StreamReaderクラスとStreamWriterクラスの利用

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/03/09 14:00

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

目次

はじめに

 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()

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • HIRO(ヒロ)

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

バックナンバー

連載:Windows PowerShell 活用編

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5