Next: , Previous: Saving Buffers, Up: Files


24.3 ファイルの読み込み

関数insert-file-contentsを使って ディスクからファイルをバッファへコピーできます。 ユーザーレベルのコマンドinsert-fileはマークを設定するので Lispプログラムでは使わないでください。

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

この関数は、ファイルfilenameの内容をカレントバッファの ポイントのうしろに挿入する。 絶対ファイル名と挿入したデータの長さから成るリストを返す。 filenameが読み込めるファイルの名前でないと、エラーを通知する。

関数insert-file-contentsは、 ファイルの内容を定義済みのファイルの書式と比較し、 必要ならばファイルの内容を変換する。 see Format Conversion。 リストafter-insert-file-functionsの関数も呼び出す。 Saving Propertiesを参照。

visitnil以外であると、 この関数はバッファを未変更と印を付け、 ファイルfilenameを訪問しているバッファとなるように バッファのさまざまな部分を設定する。 これには、バッファが訪問しているファイルの名前、ファイル更新時刻を含む。 この機能はfind-file-noselectで使われており、 読者自身が使うことはないであろう。

begendnil以外であると、 それらは挿入すべきファイルの部分を指定する整数であること。 この場合、visitnilであること。 たとえば、

          (insert-file-contents filename nil 0 500)

はファイルの最初の500文字を挿入する。

引数replacenil以外であると、 バッファの内容(実際には参照可能な部分のみ)を ファイルの内容で置き換えることを意味する。 これは、単純にバッファの内容を削除してからファイル全体を挿入するより 好ましい。 なぜなら、(1)マーカ位置を保存できる場合がある、 (2)アンドゥリストにほとんどデータを入れない、からである。

replacevisitnilである限り、 insert-file-contentsで(FIFOや入出力装置などの) 特別なファイルを読むことも可能である。

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

この関数はinsert-file-contentsのように動作するが、 書式を変換しない(see Format Conversion)、 文字コードを変換しない(see Coding Systems)、 find-file-hooksを実行しない、自動的に解凍しないなどが異なる。

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