ファイルを開いて、特定のコンテンツを読み込んだり、新しいコンテンツを書き込んだりします。
FileObj := FileOpen(Filename, Flags , Encoding)
型:文字列
開くファイルのパス。絶対パスが指定されていない場合は、A_WorkingDirにあると仮定されます。
以下のようにアスタリスク(または2つ)を指定すると、標準入力/出力/エラーストリームを開くことができます:
FileOpen("*", "r") ; 標準入力用 FileOpen("*", "w") ; 標準出力用 FileOpen("**", "w") ; 標準エラー用
希望するアクセスモードを示す文字列の後に他のオプション(オプションで空白またはタブを挟む)が続くか、または数値フラグの組み合わせ(合計)です。サポートされる値は、以下の表のとおりです。
If omitted, the default encoding (as set by FileEncoding or CP0 otherwise) will be used. If blank, it defaults to CP0 (the system default ANSI code page). Otherwise, specify the encoding or code page to use for text I/O, e.g. "UTF-8"
, "UTF-16"
, "CP936"
or 936
.
If the file contains a UTF-8 or UTF-16 byte order mark (BOM), or if the h
(handle) flag is used, this parameter and the default encoding will be ignored, unless the file is being opened with write-only access (i.e. the previous contents of the file are being discarded).
フラグ | 十進法 | 十六進法 | 説明 |
---|---|---|---|
r | 0 | 0x0 | Read:ファイルが存在しない場合、失敗します。 |
w | 1 | 0x1 | Write:新しいファイルを作成し、既存のファイルを上書きします。 |
a | 2 | 0x2 | Append:ファイルが存在しない場合は新しいファイルを作成し、それ以外の場合はファイルポインタをファイルの末尾に移動します。 |
rw | 3 | 0x3 | Read/Write:ファイルが存在しなかった場合、新しいファイルを作成します。 |
h | Filenameがオブジェクトにラップするためのファイルハンドルであることを示します。共有モードフラグは無視され、ハンドルが表すファイルまたはストリームはバイトオーダーマークをチェックしない。ファイルオブジェクトが破棄されても、ファイルハンドルは自動的にクローズされず、File.Closeを呼び出しても何の効果もない。なお、Filenameがパイプや通信機器などの非シーキングデバイスへのハンドルである場合は、File.Seek、File.Pos、File.Lengthは使用しないこと。 |
フラグ | 十進法 | 十六進法 | 説明 |
---|---|---|---|
-rwd | 読み取り、書き込み、および削除のアクセスに対してファイルをロックします。r 、w 、d の組み合わせは自由です。- を指定することは、-rwd を指定することと同じです。完全に省略された場合、デフォルトはすべてのアクセスを共有します。 |
||
0 | 0x0 | Flagsが数値の場合、共有モードフラグがない場合は、ファイルがロックされます。 | |
256 | 0x100 | 読み取りアクセスを共有します。 | |
512 | 0x200 | 書き込みアクセスを共有します。 | |
1024 | 0x400 | 削除アクセスを共有します。 |
フラグ | 十進法 | 十六進法 | 説明 |
---|---|---|---|
`n | 4 | 0x4 | 読むときは`r`n を`n に、書くときは`n を`r`n に置き換えてください。 |
`r | 8 | 0x8 | 読み取り時にスタンドアロンの`r を`n に置き換える。 |
型:オブジェクト
戻り値は、ファイルへのオープンハンドルをカプセル化した新しいFileオブジェクトです。このオブジェクトのメソッドとプロパティを使用して、ファイルのコンテンツにアクセスします。
ファイルを開くことができない場合は、OSErrorが投げられる。
File.ReadLineは、`n
、`r`n
、`r
を常に行末としてサポートし、`r
または`n
オプションが使用されているかどうかにかかわらず、その戻り値にそれらを含めないようにします。このオプションは、File.Readによって返されたテキスト、File.WriteまたはFile.WriteLineによって書き込まれたテキスト内の行末の変換にのみ影響します。
When a UTF-8 or UTF-16 file is created, a byte order mark (BOM) is written to the file unless Encoding or the default encoding (as set by FileEncoding) is "UTF-8-RAW"
or "UTF-16-RAW"
.
UTF-8またはUTF-16のバイトオーダーマーク(BOM)を含むファイルを読み込みアクセスで開いた場合、ファイルポインタをBOMの後に配置することで出力から除外されるようにしました。そのため、File.Posでは、ファイルを開いた直後に3や2を報告することがあります。
FileEncoding、Fileオブジェクト、FileRead
ファイルにテキストを書き込み、それをメモリに読み戻します(このDllCallの例と同じ機能を提供します)。
FileName := FileSelect("S16",, "Create a new file:") if (FileName = "") return try FileObj := FileOpen(FileName, "w") catch as Err { MsgBox "Can't open '" FileName "' for writing." . "`n`n" Type(Err) ": " Err.Message return } TestString := "This is a test string.`r`n" ; この方法でファイルを書く場合、改行には `n ではなく `r`n を使用します。 FileObj.Write(TestString) FileObj.Close() ; ファイルが書き込まれたので、その内容をメモリに読み返してください。 try FileObj := FileOpen(FileName, "r-d") ; read the file ("r")は、削除("-d")を除くすべてのアクセスを共有します。 catch as Err { MsgBox "Can't open '" FileName "' for reading." . "`n`n" Type(Err) ": " Err.Message return } CharsToRead := StrLen(TestString) TestString := FileObj.Read(CharsToRead) FileObj.Close() MsgBox "The following string was read from the file: " TestString
; このデモのためにコンソールウィンドウを開いてください: DllCall("AllocConsole") ; アプリケーションのstdin/stdoutストリームをオープンします。 stdin := FileOpen("*", "r") stdout := FileOpen("*", "w") stdout.Write("Enter your query.`n\> ") stdout.Read(0) ; 書き込みバッファをフラッシュします。 query := RTrim(stdin.ReadLine(), "`n") stdout.WriteLine("Your query was '" query "'. Have a nice day.") stdout.Read(0) ; 書き込みバッファをフラッシュします。 Sleep 5000