Next: Writing to Files, Previous: Saving Buffers, Up: Files [Contents][Index]
ファイルのコンテンツをバッファーにコピーするためには関数insert-file-contents
を使用します(マークをセットするのでLispプログラム内でコマンドinsert-file
は使用してはならない)。
この関数はファイルfilenameのコンテンツをカレントバッファーのポイントの後に挿入する。これは絶対ファイル名と挿入だれたデータの長さからなるリストをリターンする。filenameが読み取り可能なファイルの名前でなければエラーがシグナルされる。
この関数は定義されたファイルフォーマットに照らしてファイルのコンテンツをチェックして、適切ならそのコンテンツの変換、およびリストafter-insert-file-functions
内の関数の呼び出しも行う。Format Conversionを参照のこと。通常はリストafter-insert-file-functions
内のいずれかの関数がEOL変換を含むファイルコンテンツのデコードに使用されるコーディングシステム(Coding Systemsを参照)を判断する。しかしファイルにnullバイトが含まれる場合には、デフォルトではコード変換なしでvisitされる。inhibit-null-byte-detectionを参照のこと。
visitが非nil
なら、この関数は追加でそのバッファーを未変更とマークしてそのバッファーのさまざまなフィールドをセットアップして、バッファーがファイルfilenameをvisitしているようにする。これらのフィールドにはバッファーがvisitしたファイルの名前、最終保存したファイルのmodtimeが含まれる。これらの機能はfind-file-noselect
により使用されるものであり、恐らくあなた自身が使用するべきではない。
begとendが非nil
なら、それらはファイル挿入範囲を指定するバイトオフセット数値であること。この場合、visitはnil
でなければならない。たとえば、
(insert-file-contents filename nil 0 500)
これはファイルの先頭500文字(バイト)を挿入する。
引数replaceが非nil
なら、それはバッファーのコンテンツ(実際にはアクセス可能な範囲)をファイルのコンテンツで置き換えることを意味する。これは単にバッファーのコンテンツを削除してファイル全体を挿入するより優れている。なぜなら、(1)マーカー位置を維持して、(2)undoリストに配置するデータも少ないからである。
replaceとvisitがnil
なら、insert-file-contents
で(FIFOやI/Oデバイスのような)スペシャルファイルの読み取りが可能。
この関数はinsert-file-contents
のように機能するが、find-file-hook
を実行せず、フォーマットのデコード、文字コード変換、自動解凍、...などを行わない点が異なる。
他のプログラムがファイルを読めるように他プロセスにファイル名を渡したければ関数file-local-copy
を使用します。Magic File Namesを参照してください。