今度は、文字列をファイルとして書き出してみましょう。
前述したように、新しくファイルを作る際にエイリアス値は使えないので、ファイル参照で指定します。
ファイル参照はa reference to
命令を使えば変数に代入できましたね。
ファイルをスクリプトへ書き出す場合も、基本的な流れは読み込みの場合と同じです。
ただし、open
命令に書き換え許可を意味するwith write permission
の引数を付ける必要があります。
また、ファイル全体を書き換える場合は、必ずset eof
命令でファイルの末尾を「0」にしておくことを忘れずに。
この作業を怠ると、ファイルを上書きする際に上書きされる側のファイルのデータが残ってしまうことがあります。
次のスクリプトは、"保存する文"という文字列をテキストファイルとして書き出します。
writeString(choose file name, "保存する文")
on writeString(theFile, theString)
open for access theFile with write permission
try
set eof theFile to 0
write theString to theFile
end try
close access theFile
end writeString
先ほどの説明と矛盾しているようですが、choose file name
命令の結果はファイル参照ですが変数に代入できます。
これは、choose file name
命令がa reference to
命令の役割を兼ねているからです。
また、read
と同様にwrite
を連続して記述すると、ファイルを続きから書き出せます。
新規ファイルは自動的にSimpleText形式(クリエータ:ttxt)のテキストファイル(ファイルタイプ:TEXT)となりますが、上書きした場合は既存のファイルのクリエータとファイルタイプがそのまま残ります。
open for access
命令は、結果を数値で返します。
これはファイルの「参照番号」を示す数値で、「参照」の代わりにスクリプト中で使えます。
また、「参照」を使った場合よりも処理速度が速いという特徴があります。
頻繁にファイルの読み書きを行う場合は、「参照番号」を使って処理することを強くお勧めします。
では、先ほどのスクリプトを「参照番号」を使って書き換えてみましよう。
writeString(choose file name, "保存する文")
on writeString(theFile, theString)
set fileNumber to (open for access theFile with write permission)
try
set eof fileNumber to 0
write theString to fileNumber
end try
close access fileNumber
end writeString
C言語の書籍などでは、ファイルの入出力を重要な処理として紹介していることが多いのですが、AppleScriptではアプリケーションの機能を利用してファイルの入出力を行うことが多いため、重要度はさほど高くありません。
しかし、使えると強力な武器になりますので、覚えておいて損はないでしょう。
AppleScriptではPICTなどのテキスト以外のデータ(バイナリデータ)のファイル操作も可能ですが、使いやすいものとは言えません。
よほどでない限り、専用のOSAXやアプリケーションを利用することをお勧めします。