Next: File Locks, Previous: Reading from Files, Up: Files [Contents][Index]
関数append-to-file
およびwrite-region
を使用することにより、ディスク上のファイルに直接、バッファーのコンテンツ、またはバッファーの一部を書き込むことができます。visitされているファイルに書き込むために、これらの関数を使用しないでください。これにより、visitにたいするメカニズムが混乱するかもしれません。
この関数は、カレントバッファー内で、startとendによるリージョンのコンテンツを、ファイルfilenameの終端に追加する。そのファイルが存在しない場合は作成する。この関数はnil
をリターンする。
filenameに書込不可能なファイル、またはファイルを作成不可なディレクトリー内の存在しないファイルを指定した場合は、エラーがシグナルされる。
Lispから呼び出した場合、この関数は以下と完全に等価である:
(write-region start end filename t)
この関数は、カレントバッファー内のstartとendで区切られたリージョンを、filenameで指定されたファイルに書き込む。
startがnil
の場合、このコマンドはバッファーのコンテンツ全体(アクセス可能な範囲だけではない)をファイルに書き込み、endは無視する。
startが文字列の場合、write-region
はバッファーのテキストではなく、その文字列を追加する。その場合、endは無視される。
appendが非nil
の場合は、指定されたテキストが(もしあれば)既存のファイルコンテンツに追加される。appendが数字の場合、write-region
はファイル開始位置からそのバイトオフセットをseekして、データをそこに書き込む。
mustbenewが非nil
の場合、write-region
はもしfilenameが既存ファイルの名前なら確認を求める。mustbenewがシンボルexcl
なら、ファイルがすでに存在する場合はwrite-region
は確認を求めるかわりに、エラーfile-already-exists
をシグナルする。
mustbenewがexcl
のときは、存在するファイルのテストに特別なシステム機能を使用する。少なくともローカルディスク上のファイルにたいしては、Emacsがファイルを作成する前に、Emacsに通知せずに他のプログラムが同じ名前のファイルを作成することはありえない。
visitがt
の場合、Emacsはバッファーとファイルの関連付けを設定し、そのバッファーがそのファイルをvictimする。また、カレントバッファーにたいする最終ファイル変更日時にfilenameをセットして、そのバッファーを未変更としてマークする。この機能はsave-buffer
により使用されるが、おそらくあなた自身が使用するべきではないだろう。
visitが文字列の場合、それはvisitするファイルの名前を指定する。この方法を使えば、そのバッファーが別のファイルをvisitしていると記録しつつ、1つのファイル(filename)にデータを書き込むことができる。引数visitは、エコーエリアに使用される他に、ファイルのロックにも使用され、visitがbuffer-file-name
に格納される。この機能は、file-precious-flag
の実装に使用される。自分が何をしているか本当にわかっているのでなければ、これを使用してはならない。
オプション引数locknameが非nil
の場合、それはロックとアンロックの目的に使用する、filenameおよびvisitをオーバーライドするファイル名を指定する。
関数write-region
は、書き込むデータをbuffer-file-format
により指定される、適切なファイルフォーマットに変換しするとともに、リストwrite-region-annotate-functions
内の関数の呼び出しも行う。Format Conversionを参照のこと。
通常、write-region
はエコーエリア内にメッセージ‘Wrote
filename’を表示する。visitがt
、nil
、文字列のいずれでもない場合、このメッセージは抑制される。この機能は、内部的な目的のために、ユーザーが知る必要がないファイルを使用する場合に有用である。
with-temp-file
マクロは、一時バッファー(temporary
buffer)をカレントバッファーとしてbodyフォームを評価して、最後にそのバッファーのコンテンツをfileに書き込む。これは終了時に一時バッファーをkillして、with-temp-file
フォームの前にカレントだったバッファーをリストアする。その後、body内の最後のフォームの値をリターンする。
throw
やエラーによる異常なexit(abnormal exit)でも、カレントバッファーはリストアされる(Nonlocal Exitsを参照)。
The Current
Bufferのwith-temp-buffer
も参照のこと。