Next: , Previous: , Up: Files   [Contents][Index]


24.3 Reading from Files

ファイルのコンテンツをバッファーにコピーするためには、関数insert-file-contentsを使用しします(マークをセットするので、Lispプログラム内でコマンドinsert-fileは使用してはならない)。

Function: insert-file-contents filename &optional visit beg end replace

この関数は、ファイル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の場合、それらはファイル挿入範囲を指定する、バイトオフセット数値であること。この場合、visitnilでなければならない。たとえば、

(insert-file-contents filename nil 0 500)

これはファイルの先頭500文字(バイト)を挿入する。

引数replaceが非nilの場合、それはバッファーのコンテンツ(実際にはアクセス可能な範囲)を、ファイルのコンテンツで置き換えることを意味する。これは単にバッファーのコンテンツを削除してファイル全体を挿入するより優る。なぜなら、(1)マーカー位置を維持し、(2)undoリストに配すデータも少ないからである。

replacevisitnilであれば、insert-file-contentsで(FIFOやI/Oデバイスのような)スペシャルファイルの読み取りが可能である。

Function: insert-file-contents-literally filename &optional visit beg end replace

この関数はinsert-file-contentsのように機能するが、find-file-hookを実行せず、フォーマットのデコード、文字コード変換、自動解凍、...などを行わない点が異なる。

他のプログラムがファイルを読めるように、他のプロセスにファイル名を渡したい場合は、関数file-local-copyを使用します。Magic File Namesを参照してください。