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を参照してください。