Next: , Previous: Reading from Files, Up: Files


24.4 ファイルへの書き出し

関数append-to-filewrite-regionを使って、 バッファの内容やその一部をディスク上のファイルへ直接書き出せます。 訪問しているファイルには、これらの関数で書き出さないでください。 訪問の機構に混乱をきたすことがあります。

— コマンド: append-to-file start end filename

この関数は、カレントバッファのstartからendで 区切られる領域の内容をファイルfilenameの末尾に追加する。 当該ファイルが存在しなければ作成する。 この関数はnilを返す。

書き込めないファイルをfilenameに指定したり、 ファイルを作成できないディレクトリ上の存在しないファイルを filenameに指定するとエラーを通知する。

— コマンド: write-region start end filename &optional append visit confirm

この関数は、カレントバッファのstartからendで 区切られる領域の内容をfilenameで指定したファイルに書き出す。

startが文字列であると、 write-regionはバッファのテキストではなく その文字列を書いたり追加する。

appendnil以外であると、 指定したテキストを既存ファイル(があれば)の内容に追加する。

confirmnil以外であると、 filenameが既存ファイルの名前であると write-regionは確認を求める。

visittであると、 Emacsはバッファとファイルの対応を確立する。 つまり、バッファはそのファイルを訪問していることになる。 さらに、カレントバッファの最終ファイル更新時刻を filenameの更新時刻にし、 バッファには未変更と印を付ける。 この機能はsave-bufferが使っているが、 読者自身が使うことはないであろう。

visitが文字列であると、訪問するファイルの名前を指定する。 このようにして、データを1つのファイル(filename)に書き出す一方で、 バッファは別のファイル(visit)を訪問していると設定できる。 引数visitはエコー領域のメッセージに使われ、 ファイルのロックにも使われる。 visitbuffer-file-nameに保存される。 この機能はfile-precious-flagの実装に使われているが、 読者は、なにをしているか理解できない限り、この機能を使わないこと。

関数write-regionは、書き出すデータを buffer-file-formatで指定される適切なファイル書式に変換する。 see Format Conversion。 さらに、リストwrite-region-annotate-functionsの関数も呼び出す。 Saving Propertiesを参照。

通常、write-regionはエコー領域にメッセージ ‘Wrote filename’を表示する。 visittでもnilでも文字列でもないと、 このメッセージは表示しない。 この機能は、ユーザーが知る必要のない 内部目的にファイルを使うプログラムに有用である。

— Macro: with-temp-file file body...

マクロwith-temp-fileは、一時的なバッファをカレントバッファとして フォームbodyを評価する。 そして最後にバッファの内容をファイルfileに書き出す。 終了すると一時的なバッファを削除し、 フォームwith-temp-fileのまえにカレントバッファであったバッファに戻る。 bodyの最後のフォームの値を返す。

throwやエラーによる異常終了(see Nonlocal Exits)であっても カレントバッファに戻る。

Current Bufferwith-temp-bufferも参照。