FileOpen()
提供: AutoHotkey Wiki
実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 |
キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル |
レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト
FileOpen() [AHK_L 42+][編集]
AHKL ファイルを開く。
file := FileOpen(Filename, Flags [, Encoding])
Paramters[編集]
引数名 | 説明 |
---|---|
Filename | 開く対象ファイルのパスを指定する。相対パスの場合はA_WorkingDirを基準とする。 |
Flags | 次表のフラグ値の組み合わせ(合計値)を指定する。英字の場合は列挙する。 |
Encoding | BOMなしのときのコードページを指定する。 コードページ一覧を参照のこと。 省略時はA_FileEncodingが適応される。 |
アクセスモードフラグ(いずれか一つのみ) | ||
r | 0x00 | Read: 読み取り。該当ファイルが無い場合は失敗する。 |
w | 0x01 | Write: 新規書き込み。既存ファイルはサイズ0に強制上書きされるので注意! |
a | 0x02 | Append: 追記。既存ファイルが無い場合は新規作成される。 |
rw | 0x03 | Update: 更新(読み+書き)。該当ファイルが無い場合は失敗する。 |
h | この場合、FilenameはAHKLのオブジェクトとしてラッピングしたいファイルハンドルを指定する。共有モードフラグは無視される。ファイルハンドルの示すものは、オブジェクトの破棄時には自動的には閉じられず、Close メソッドは何の効果も与えない。(注意) Filenameにシーク不可能なデバイス(パイプや対話型デバイスなど)のファイルハンドルを指定した場合は、 Seek, Tell, Length は利用すべきではない。
| |
共有モードフラグ | ||
-rwd | 読み取り/書き込み/削除用のロックをファイルに対して行う。r,w,d の任意の組み合わせが利用可能。- を指定することは-rwd を指定することと同義である。いずれも指定がない場合は、全てのアクセスは共有される。
| |
0x000 | フラグが数値で共有モードフラグが未指定な場合は、ファイルはロックされる。 | |
0x100 | 共有読み取り。 | |
0x200 | 共有書き込み。 | |
0x400 | 共有削除。 | |
行末(EOL)オプション | ||
`n | 0x04 | 読み取り時にCRLFをLFに、書き込み時にLFをCRLFに変換する。 |
`r | 0x08 | 読み取り時に単独のCRをLFに置換する。 |
Returns[編集]
ファイルを開くのに成功した場合は、Fileオブジェクトを返す。失敗時は 0
を返す。
If file
または IsObject(file)
とすることで結果の成否を判断できる。
Remarks[編集]
UTF-8 または UTF-16 形式のファイルが作成されるときは BOM が付与される。これは引数Encoding
(あるいは引数省略時にA_FileEncodingに指定されている値)に "UTF-8-RAW" や "UTF-16-RAW" が指定されていない場合に生じる。
Related[編集]
FileEncoding, Fileオブジェクト, FileRead
Example(s)[編集]
; スクリプトファイルを読専で開いて最初の一行を読み取る。
file := FileOpen(A_ScriptFullPath, "r") MsgBox % file.ReadLine(); アプリケーションの標準入出力を行変換モードで開く。
; これは SciTE4AutoHotkey のような標準入出力を扱えるエディタで試すことができる。
stdin := FileOpen(DllCall("GetStdHandle", "int", -10, "ptr"), "h `n") stdout := FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n") stdout.Write("Enter your query.`n\> ") query := RTrim(stdin.ReadLine(), "`n") stdout.WriteLine("Your query was '" query "'. Have a nice day.")