BinStream メソッドを使用すると、バイナリ ファイルの読み取りと書き込みができますメソッドは、「FileStream 値」で提供されるものと非常に似ています。
メソッド:
<BinStream>fopen <String fileName> <String mode>
モード パラメータに基づいて、読み込みまたは書き込み用ファイルを開きます。この関数は BinStream 値を返します。
fopen
メソッドは、モードの文字列を解析します。{rwa} の 1 つを正確に検索し、単一の '+'、{tb} の 1 つ、{SR} の 1 つ、単一の 'T' および単一の 'D' のほとんどを参照します。
つまり、モード文字列は次の場合に有効です。
最初のモード文字が「r」、「w」、「a」のうちいずれかである場合
次のオプションのモード文字を最大 6 個まで含むことができる場合
文字「+」
「t」か「b」のいずれか
「c」か「n」のいずれか
「S」か「R」のいずれか文字「T」
文字「T」
文字「D」
r
- 読み込み専用テキスト - ファイルが存在する必要があります。
rt
- 読み込み専用テキスト - ファイルが存在する必要があります。
rb
- 読み取り専用バイナリ - ファイルが存在する必要があります
r+
- 読み取り/書き込み可能なテキスト - ファイルが存在する必要があります
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
- 関連ファイル名の確定フラグを有効にして、flush または fflush が呼び出された場合にファイル バッファの内容がディスクに直接書き込まれるようにします。
n
- 関連ファイル名の確定フラグを「no-commit」にリセットします。ファイル バッファの内容はオペレーティング システム バッファに書き込まれます。
これらのモードは実際の文字列であり、引用符で囲む必要があります。
大文字と小文字も区別されます。
"a"
アクセス タイプのいずれかでファイルが開かれている場合、すべての書き込み操作はファイルの最後に行われます。ファイル ポインタは、シークを使用して再ポイントできますが、すべての書き込み操作が実行される前に、必ずファイルの最後に戻ります。したがって既存のデータを上書きできません。
"a"
モードは、ファイルへ追加する前に EOF マーカーを削除しません。追加が行われた後、MS-DOS の TYPE コマンドでは、元の EOF マーカーまでのデータだけが表示され、ファイルに追加されたデータは表示されません。
"a+"
モードは、ファイルへ追加する前に EOF マーカーを削除します。追加後、MS-DOS の TYPE コマンドでファイルのデータがすべて表示されます。"a+"
モードは、Ctrl+Z EOF マーカーで終了するストリーム ファイルへの追加に必要です。
"r+"
、"w+"
または "a+"
のアクセス タイプを指定すると、読み取りと書き込みの両方が可能になります(ファイルは「更新」用に開かれます)。ただし、読み込みと書き込みを切り替えるときには、媒介する fflush
または fseek
演算が必要です。必要に応じて fseek
演算に対して現在位置を指定できます。
上記以外の文字があったり、上記の文字が繰り返されたり、オプションのモード文字がいずれか 1 つではなく両方あったりする場合は、ランタイム エラーが発生します。
モード文字列に「t」か「b」が含まれない場合は、「b」がモード文字列に自動的に追加され、ファイルはバイナリ モードで開きます。3ds Max 8 以降 で使用可能です。
fflush <binStream>
ファイルへの出力がすべてディスク上に存在するかどうかを確認し、メモリ バッファをフラッシュします。
<Boolean>FClose <BinStream>
BinStream 値を閉じます。BinStream を正しく閉じたら、True を返します。
<Boolean>fseek <BinStream> <Integer> <#seek_set | #seek_cur | #seek_end>
ファイル ポインタをシーク パラメータから指定値だけ移動します。
#seek_set -- base off start of file.
#seek_cur -- base off current position.
#seek_end -- base off end of file.
<Integer>ftell <BinStream>
ファイル ポインタの現在位置を返します。
<Boolean>WriteByte <BinStream> <Integer> [#signed | #unsigned]
ファイルに 1 バイトの整数を書き込みます。書き込みに成功すると、True を返します。
<Boolean>WriteShort <BinStream> <Integer> [#signed | #unsigned]
ファイルに 2 バイトの整数を書き込みます。書き込みに成功すると、True を返します。
<Boolean>WriteLong <BinStream> <Integer> [#signed | #unsigned]
ファイルに 4 バイトの整数を書き込みます。書き込みに成功すると、True を返します。
<Boolean>WriteFloat <BinStream> <Float>
ファイルに 4 バイトの実数を書き込みます。書き込みに成功すると、True を返します。
<Boolean>WriteString <BinStream> <String>
ファイルに文字列を書き込みます。書き込みに成功すると、True を返します。
<Boolean>WriteLongLong <BinStream> <Integer64> [#signed | #unsigned]
ファイルに 8 バイトの Integer64 を書き込みます。書き込みに成功すると、True を返します。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
<Boolean>WriteDouble <BinStream> <Double>
Double を 8 バイトでファイルに書き込みます。書き込みに成功すると、True を返します。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
<Boolean>WriteFloatAsDouble <BinStream> <float>
float 値を倍精度(8 バイト)の float として BinStream に書き込みます。書き込みに成功すると、True を返します。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
<Integer>ReadByte <BinStream> [#signed | #unsigned]
1 バイトの値を読み込み、整数で返します。
<Integer>ReadShort <BinStream> [#signed | #unsigned]
2 バイトの値を読み込み、整数で返します。
<Integer>ReadLong <BinStream> [#signed | #unsigned]
4 バイトの値を読み込み、整数で返します。
<Float>ReadFloat <BinStream>
4 バイトの値を読み込み、実数で返します。
<String>ReadString <BinStream>
ファイルから文字列を読み込みます。
<Float>ReadDoubleAsFloat <BinStream>
BinStream から倍精度(8 バイト)の float を読み取り、1 つの float として返します。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
<Integer64>ReadLongLong <BinStream> [#signed | #unsigned]
8 バイト値を読み取り、1つの Integer64 として返します。3ds Max 2008 以降 で使用可能です。
従来、Avguard 機能拡張として提供されていた機能です。
<Double>ReadDouble <BinStream>
8 バイト値を読み取り、1つの Double として返します。3ds Max 2008 以降 で使用可能です。
従来、Avguard 機能拡張として提供されていた機能です。
例
f=fopen "c:\\test.bin" "wb" WriteString f "String" WriteByte f 64 WriteShort f 128 WriteLong f 256 WriteFloat f 512.0 WriteString f "gnirtS" WriteLong f (ftell f) fclose f f=fopen "c:\\test.bin" "rb" ReadString f ReadByte f ReadShort f ReadLong f ReadFloat f ReadString f ftell f ReadLong f fclose f