3通りの方法がある。
- Get-Contentコマンドレットを使う
- Get-Content変数構文を使う
- System.IO名前空間のFileクラスのReadAllTextメソッドを使う
1と2は行単位で読み込むが、3は文字単位で読み込む。読み込み速度は早い順に3,2,1。以下はサイズが300万バイトのテキストファイル(「AB」と「あい」の行を繰り返すだけの合計60万行のシフトJISのテキストファイル、改行コードはCR+LF)を作成し、それぞれ読み込んだときの時間(秒)を計測、表示している。その後に読み込んで格納した配列の長さと1~3番目の要素を表示している。
PS D:\temp> "AB`r`nあい`r`n" * 3.e5 | Out-File -Encoding default -NoNewline .\text.txt PS D:\temp> (Measure-Command { >> $s = Get-Content .\text.txt}).TotalSeconds 4.876546 PS D:\temp> (Measure-Command { >> $s = Get-Content .\text.txt}).TotalSeconds 5.4966804 PS D:\temp> $s.Length; $s[0..2] 600000 AB あい AB PS D:\temp> (Measure-Command { >> $s = ${d:\temp\text.txt}}).TotalSeconds 0.1765545 PS D:\temp> $s.Length; $s[0..2] 600000 AB あい AB PS D:\temp> (Measure-Command { >> $s = [IO.File]::ReadAllText("d:\temp\text.txt")}).TotalSeconds 0.0567449 PS D:\temp> $s.Length; $s[0..2] 3000000 A B