FileStream 値

FileStream クラスは、MAXScript 内でテキスト ファイルの入出力を実装します。FileStream 値は、MAXScript 内で開いているテキスト ファイルです。テキスト ファイルの入出力は、ファイルストリーム値で関数を呼び出して実行します。

コンストラクタ

 createFile <filename_string>
[encoding:{ <#current> | <#English> | <#German> | <#French> | <#Japanese> | <#Korean> | <#Chinese> | <#utf8> | <#utf16LE> | <#utf16BE> | <int codepage> } ] \
[writeBOM:<boolean>]

新しいファイルを作成して <filestream> 値を返します。指定したファイルを作成できない場合は、undefined 値が返されます。

encoding: キーワード オプションを使用して特定のキャラクタ エンコーディングを強制することができます。 指定しない場合、既定値は #current エンコーディングになります。

writeBOM: キーワード オプションを使用すると、UTF-8 ファイルの Byte-Order-Mark を記述するかどうかを指定できます。

3ds Max 2013 以降での Unicode および BOM の使用方法の詳細については、「キャラクタ エンコーディング」のトピックを参照してください。

 openFile <filename_string>
[mode:<mode_string>]
[encoding:{ <#current> | <#English> | <#German> | <#French> | <#Japanese> | <#Korean> | <#Chinese> | <#utf8> | <#utf16LE> | <#utf16BE> | <int codepage> } ] \
[writeBOM:<boolean>]

ファイルが開き、<filestream> 値が返されます。指定したファイルを開けない場合は、undefined 値が返されます。オプションの <mode_string> は次のように設定できます。

r - 読み込み専用テキスト - ファイルが存在する必要があります。

rt - 読み込み専用テキスト - ファイルが存在する必要があります。

rb - 読み取り専用バイナリ - ファイルが存在する必要があります

r+ - 読み取り/書き込み可能なテキスト - ファイルが存在する必要があります

既定は「rt」です。

a - 書き込み専用テキスト、追加書き込み - 3ds Max 2013 では、存在しない場合にはファイルが作成されます(3ds Max 2012 以前では、ファイルが必ず存在する必要があります)。

at - 書き込み専用テキスト、追加書き込み - 3ds Max 2013 では、存在しない場合にはファイルが作成されます(3ds Max 2012 以前では、ファイルが必ず存在する必要があります)。

ab - 書き込み専用バイナリ、追加書き込み - 3ds Max 2013 では、存在しない場合にはファイルが作成されます(3ds Max 2012 以前では、ファイルが必ず存在する必要があります)。

a+ - 読み込み/書き込みテキスト、追加書き込み - 3ds Max 2013 では、存在しない場合にはファイルが作成されます(3ds Max 2012 以前では、ファイルが必ず存在する必要があります)。

w - 書き込み専用テキスト - ファイルが存在する場合はファイル内容を削除します。

wt - 書き込み専用テキスト - ファイルが存在する場合はファイル内容を削除します。

wb - 書き込み専用バイナリ - ファイルが存在する場合はファイル内容を削除します。

w+ - 読み込み/書き込みテキスト - ファイルが存在する場合はファイル内容を削除します。

S - おもに連続でアクセスします。

R - おもにランダムにアクセスします。

T - 一時保管ファイル(フラッシュしないようにします)。

D - 最後のハンドルが閉じられたら、ファイルは削除されます。

c - 関連ファイル名の確定フラグを有効にして、close または flush が呼び出された場合にファイル バッファの内容がディスクに直接書き込まれるようにします。

n - 関連ファイル名の確定フラグを「no-commit」にリセットします。ファイル バッファの内容はオペレーティング システム バッファに書き込まれます。

警告:

これらのモードは実際の文字列であり、常に引用符で囲む必要があります。 大文字と小文字も区別されます

"a" アクセス タイプのいずれかでファイルが開かれている場合、すべての書き込み操作はファイルの最後に行われます。ファイル ポインタは、シークを使用して再ポイントできますが、すべての書き込み操作が実行される前に、必ずファイルの最後に戻ります。したがって既存のデータを上書きできません。

"a" モードは、ファイルへ追加する前に EOF マーカーを削除しません。追加後、MS-DOS の TYPE コマンドでは、元の EOF マーカーまでのデータだけが表示され、ファイルに追加されたデータは表示されません。

"a+" モードは、ファイルへ追加する前に EOF マーカーを削除します。追加後、MS-DOS の TYPE コマンドでファイルのデータがすべて表示されます。"a+" モードは、Ctrl+Z EOF マーカーで終了するストリーム ファイルへの追加に必要です。

"r+""w+" または "a+" のアクセス タイプを指定すると、読み取りと書き込みの両方が可能になります(ファイルは「更新」用に開かれます)。ただし、読み込みと書き込みを切り替えるときには、媒介する flush() または seek() 演算が必要です。必要に応じて seek() 演算に対して現在位置を指定できます。

encoding: キーワード オプションを使用して特定のキャラクタ エンコーディングを強制することができます。 指定しない場合、既定値は #current エンコーディングになります。

詳細については、「キャラクタ エンコーディング」のトピックを参照してください。

完全なパスが指定されていない場合に filename_string が検索されるディレクトリのリストについては、「ファイル アクセス関数の検索動作」を参照してください。

 openEncryptedFile <filename> <key>
[encoding:{ <#current> | <#English> | <#German> | <#French> | <#Japanese> | <#Korean> | <#Chinese> | <#utf8> | <#utf16LE> | <#utf16BE> | <int codepage> } ] \
[writeBOM:<boolean>]

指定の整数キーを使って暗号化されたファイルを開き、openFile() 関数から返される FileStream と同様に、読み取り可能な FileStream 値を返します。暗号化されたファイルの詳細は、暗号化ファイルを参照してください。

encoding: キーワード オプションを使用して特定のキャラクタ エンコーディングを強制することができます。 指定しない場合、既定値は #current エンコーディングになります。

writeBOM: キーワード オプションを使用すると、UTF-8 ファイルの Byte-Order-Mark を記述するかどうかを指定できます。

3ds Max 2013 以降での Unicode および BOM の使用方法の詳細については、「キャラクタ エンコーディング」のトピックを参照してください。

完全なパスが指定されていない場合に filename が検索されるディレクトリのリストについては、「ファイル アクセス関数の検索動作」を参照してください。

メソッド

readLine <filestream>

次の行を読み込んで、文字列として返します。

readChar <filestream>

次の文字を読み込んで、文字列として返します。

readChars <filestream> <char_count> errorAtEOF:<boolean>

指定された文字数を読み込み、1 つの文字列にして返します。

errorAtEOF パラメータが false の場合は、このメソッドがファイルストリームの末尾を超えて読み取ろうとしても、例外が発生しません。同様に、このパラメータを false に、<char_count> を -1 に設定した場合は、このメソッドがファイルの末尾まで読み取るようになります。既定値は true です。

readDelimitedString <filestream> <string>

(string引数の)区切り文字を得て、区切り文字が見つかる(またはファイルの終わりに到達する)まで文字を読み込み、それらの文字を文字列として返します。

注: 区切り文字が複数の文字の場合は、文字列そのものではなく、文字列内の各文字が区切り文字として扱われます。たとえば、「This is an abc string」を含むファイルストリームがあり、区切り文字が「abc」である場合、この関数は「This is an」ではなく「This is」を返します。
skipToString <filestream> <string>

指定した文字列を前方検索し、文字列が見つかったらその文字列の直後に位置を設定します。

文字列が見つからない場合、関数は undefined 値を返します。

skipToNextLine <filestream>

次の行の先頭に入力ファイルの位置を設定します。

filePos <filestream>

ファイルの現在のオフセットを取得します。

seek <filestream> <integer>

後続の入出力がそこから開始するように与えられたオフセットでファイルを位置決めします。

注: seek メソッドは #eof を引数として受け入れます。これを指定すると、ファイル/文字列ストリームの最後に位置決めが行われます。この地点での filePos によりファイルの長さがわかります。readChars メソッドも、errorAtEOF というブール値キーワード パラメータを受け入れます。現時点での動作に一致するため、このキーワード パラメータの既定値は True になります。False で、かつ、ファイルの最後まで読み込もうとすると、エラー メッセージが発生し、ファイルの最後までの内容を含む文字列が返されます。

したがって次のように記述できます。

seek fin #eof
maxlen=filepos fin
seek fin 0
res = readChars fin maxlen errorAtEOF:false
eof <filestream>

ファイルにデータが残っていない場合は true、データが残っている場合は false を返します。

flush <filestream>

ファイルへの出力がすべてディスク上に存在するかどうかを確認し、メモリ バッファをフラッシュします。

close <filestream>

メモリ バッファをフラッシュしてファイルを閉じます。

free <filestream>

ガベージ コレクションを待たずに、filestream 値によって使用されているメモリを解放します。

3ds Max 9 以降 で使用可能です。

次のメソッドに関しては、execute() メソッドの説明を「文字列値」で参照し、評価式での変数のスコープに関する情報を得てください。

readValue <filestream> [ ignoreStringEscapes:<boolean> ]
safeReadValue <filestream> [ ignoreStringEscapes:<boolean> ]

ファイルから次の MAXScript <operand> を読み取り、評価します。

オプションの ignoreStringEscapes: キーワード引数を指定しないか、あるいは false に指定し、かつ、読み取った値が文字列である場合、文字列の文字「\」はエスケープ文字として処理されます。true の場合、文字列内の「\」は、エスケープ文字として処理されません。3ds Max 8 以降 で使用可能です。

3ds Max 2022.1 Update の新機能: safeReadValue() バージョンは安全ではない MAXScript、.NET、および Python コマンドを常にブロックします。

readExpr <filestream>
safeReadExpr <filestream>

ファイルから次の MAXScript <expr> を読み取り、評価します。

評価のスコープは現在のスコープではなく、グローバル スコープであることに注意してください。

3ds Max 2022.1 Update の新機能: safeReadExpr() バージョンは安全ではない MAXScript、.NET、および Python コマンドを常にブロックします。

execute <filestream>

stringStream に残されたすべての式を読み込み、評価します。評価のスコープは現在のスコープではなく、グローバル スコープであることに注意してください。

上記のメソッドの違いを次の例に示します。この例では、2 つの式から構成される文字列を含む stringstream 値が作成されます。文字列に含まれている式は、random 0. 1. および random red blue です。readValuereadExpr、および execute メソッドが stringstream を引数として実行されます。

スクリプト:

s=stringstream "random 0. 1.;random red blue"
readvalue s -- read and evaluate the first value
readvalue s -- read and evaluate the second value
seek s 0 -- position at beginning of stringstream
readexpr s -- read and evaluate the first expression
readexpr s -- read and evaluate the second expression
seek s 0 -- position at beginning of stringstream
execute s -- evaluate all expressions

出力

StringStream: "random 0. 1.;random red blue" -- result line 1
random() -- result line 2 (evaluated "random")
0.0 -- result line 3 (evaluated "0.")
OK -- result line 4
0.448042 -- result line 5 (evaluated "random 0. 1. ")
(color 86.476 0 163.24) -- result line 6 (evaluated "random red blue")
OK -- result line 7
(color 30.2417 0 143.636) -- result line 7 (evaluated all expressions,
-- returns result of last expression)

関連するメソッド

print <value> to:<filestream>

指定されたファイル ストリームに値を出力します。

format <fmt_string> { <value> } to:<filestream>

指定されたファイル ストリームに値をフォーマットします。

これらのメソッドの詳細については、「値の共通プロパティ、演算子、メソッド」を参照してください。