FileRead

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 | キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル | レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト

FileRead[編集]

テキストファイルの全内容を変数に読み込む。

FileRead, OutputVar, Filename

Parameters[編集]

引数名 説明
OutputVar 読み込んだ内容を格納する変数名。
FileName 対象となるファイル名。
相対パスで指定した場合は、%A_WorkingDir%を基準としたパスとなる。
また、ファイル読み込みオプションとしてファイル名の前に半角スペース区切りで以下のオプションを指定できる
*t ファイルをテキストとして読み込む。このとき、CR+LFのLFへの自動変換が行われる。
ただし、多くの場合CR+LFのままでも問題はない。
*Mnnn ファイルの先頭から数値で指定したバイト(nnn )数だけが読み込まれる。(例: *m1024 %filename%)
*c ClipboardAllに格納するデータをファイルから読み出す。これが指定されている場合は他のオプションは全て無視される。
*Pnnn AHKL [AHK_L 42+]: コードページ nnn でのテキストファイル読み込みが可能となる(例: *P932 と指定するとシフトJIS)。
詳しくはコードページ一覧を参照のこと。省略時はFileEncodingコマンドで設定したA_FileEncodingの内容が適応される。

ErrorLevel[編集]

正常終了すれば 0、何か問題があれば 1

AHKL [L55+] A_LastError にOSのGetLastError()関数を呼び出した結果を格納。

AHKL [v1.1.04+] このコマンドは失敗した場合に例外をスローすることができる。詳細は実行時エラーを参照。

バイナリデータの読み込み[編集]

読み込み対象ファイル・パラメタ・デフォルト設定によるが、FileRead はデータをテキストとして変換しながら読み込みを行う(テキスト形式はANSI、Unicodeでそれぞれ異なる)。これにより、以下のようなケースを除いて、対象とするファイルがバイナリデータのとき問題を引き起こす可能性が生じる。

  • *Cオプション利用時は: コードページや行末の変換がすべて無視される
  • *Pnnn オプション利用時で、nnn が文字の内部形式と一致する場合: コードページ変換は行われない。
  • 現在のコードページ設定が文字の内部形式と一致する場合: コードページ変換は行われない。

補足: file := FileOpen() として作成したFileオブジェクトfile.RawRead() を行えばバイナリデータをより適切に扱う事ができる。

Remarks[編集]

ファイル内容をすべてメモリ上に読み込むのを目的とする場合、File読み込みループよりもパフォーマンスはより高いものとなる。

*Mnnn でサイズ指定を行って居ない場合、1GBよりも大きなサイズを読み込もうとした場合、ErrorLevel には 1がセットされ OutputVar は空となる。サイズ指定をした場合は、指定サイズが読み込まれる。

#MaxMemで設定した上限を超えてファイル内容をメモリにロードする事が可能。ファイルサイズをあらかじめ知るには FileGetSize を用いる。

ヌル文字(0x00)を含むファイル(通常のテキストファイルにこれは含まれない)があってもメモリ上への読み込みはなされるが、最初のヌル文字までした変数としては利用できない。しかしデータ自体は存在するので、適切なメモリアドレスの指定ができるなら DllCallNumGet や アドレス演算子等でのアクセスで利用する事は可能である。

ファイル読み込みループFileReadLine とは異なり、Control-Z(0x1A)をファイル終端マーカーとは認識しない。従って、Control-Zはすべて -- 実際のファイル終端に一つだけあったとしても -- そのまま読み込まれる。

本コマンドで、ファイル内容を行毎に素早くソートするといった利用法がある。

FileRead, Contents, C:\Address List.txt
If not ErrorLevel	; 読み込み成功
{
    Sort, Contents
    FileDelete, C:\Address List (alphabetical).txt
    FileAppend, %Contents%, C:\Address List (alphabetical).txt
    Contents =		; メモリを解放
}

AHKL FileOpen() は FileRead に比べ様々な機能を持っている。バイナリデータの読み書きや、ファイル内容をメモリ上にすべて読み込まずに一部だけ書き換えたりする、などといったことができる。詳しくは Fileオブジェクト を参照のこと。

Related[編集]

file-reading loop, FileReadLine, FileGetSize, FileAppend, IniRead, Sort, URLDownloadToFile

AHKL FileOpen(), FileEncoding, Fileオブジェクト

Example(s)[編集]

FileRead, OutputVar, C:\My Documents\My File.txt