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


24.3 ファイルの読み込み

ファイルのコンテンツをバッファーにコピーするためには関数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により使用されるものであり、恐らくあなた自身が使用するべきではない。

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