2011年5月27日金曜日

◆参照モードでのテキストファイルの読み込み

テキストファイルを読み込むには言わずと知れたGet-Contentコマンドレットを使う。
通常はこれで全く問題ないと思うが、特別性能を要求されるような処理では、System.IO.FileクラスのReadAllTextメソッドを使うと良い。

ただし、このメソッドは排他されているファイルの読み込みが出来ない。
そんな時は、StreamReaderクラスを使い、アクセスモードを指定する。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021

#Measure-Command{
# [System.IO.File]::ReadAllText("$env:windir\windowsupdate.log")
#}


Measure-Command{
gc $env:windir\windowsupdate.log
}

Measure-Command{
$mode = [System.IO.FileMode]::Open
$access = [System.IO.FileAccess]::Read
$fileshare = [System.IO.FileShare]::ReadWrite

$file = [System.IO.File]::Open(
"$env:windir\windowsupdate.log",$mode,$access,$fileshare)

$reader = New-Object System.IO.StreamReader($file)
$reader.ReadToEnd()
$reader.Close()
$file.Close()
}

image

FileMode 列挙体
FileAccess 列挙体
FileShare 列挙体

0 件のコメント:

コメントを投稿