Next: File Locks, Previous: Reading from Files, Up: Files
関数append-to-file
やwrite-region
を使って、
バッファの内容やその一部をディスク上のファイルへ直接書き出せます。
訪問しているファイルには、これらの関数で書き出さないでください。
訪問の機構に混乱をきたすことがあります。
この関数は、カレントバッファのstartからendで 区切られる領域の内容をファイルfilenameの末尾に追加する。 当該ファイルが存在しなければ作成する。 この関数は
nil
を返す。書き込めないファイルをfilenameに指定したり、 ファイルを作成できないディレクトリ上の存在しないファイルを filenameに指定するとエラーを通知する。
この関数は、カレントバッファのstartからendで 区切られる領域の内容をfilenameで指定したファイルに書き出す。
startが文字列であると、
write-region
はバッファのテキストではなく その文字列を書いたり追加する。appendが
nil
以外であると、 指定したテキストを既存ファイル(があれば)の内容に追加する。confirmが
nil
以外であると、 filenameが既存ファイルの名前であるとwrite-region
は確認を求める。visitが
t
であると、 Emacsはバッファとファイルの対応を確立する。 つまり、バッファはそのファイルを訪問していることになる。 さらに、カレントバッファの最終ファイル更新時刻を filenameの更新時刻にし、 バッファには未変更と印を付ける。 この機能はsave-buffer
が使っているが、 読者自身が使うことはないであろう。visitが文字列であると、訪問するファイルの名前を指定する。 このようにして、データを1つのファイル(filename)に書き出す一方で、 バッファは別のファイル(visit)を訪問していると設定できる。 引数visitはエコー領域のメッセージに使われ、 ファイルのロックにも使われる。 visitは
buffer-file-name
に保存される。 この機能はfile-precious-flag
の実装に使われているが、 読者は、なにをしているか理解できない限り、この機能を使わないこと。関数
write-region
は、書き出すデータをbuffer-file-format
で指定される適切なファイル書式に変換する。 see Format Conversion。 さらに、リストwrite-region-annotate-functions
の関数も呼び出す。 Saving Propertiesを参照。通常、
write-region
はエコー領域にメッセージ ‘Wrote filename’を表示する。 visitがt
でもnil
でも文字列でもないと、 このメッセージは表示しない。 この機能は、ユーザーが知る必要のない 内部目的にファイルを使うプログラムに有用である。
マクロ
with-temp-file
は、一時的なバッファをカレントバッファとして フォームbodyを評価する。 そして最後にバッファの内容をファイルfileに書き出す。 終了すると一時的なバッファを削除し、 フォームwith-temp-file
のまえにカレントバッファであったバッファに戻る。 bodyの最後のフォームの値を返す。
throw
やエラーによる異常終了(see Nonlocal Exits)であっても カレントバッファに戻る。Current Bufferの
with-temp-buffer
も参照。