SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 活用編

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

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

次のページ
ファイルをすべて読み込む

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3592 2009/03/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング