# file

ファイル管理

## 呼び出し手順

    [unit [,err]]=file('open', file-name [,status] [,access [,recl]] [,format])
                file(action,unit)
                [units [,typ [,nams [,mod [,swap]]]]] = file([unit])

## パラメータ

file-name

  文字列, オープンするファイルのファイル名

status

  文字列, オープンするファイルのステータス

  "new"

    ファイルは存在せず新規ファイル (デフォルト)

  "old"

    ファイルは既存.

  "unknown"

    unknown status

  "scratch"

    ファイルはセッション終了時に削除されます

access

  文字列, ファイルへのアクセス形式

  "sequential"

    連続アクセス (デフォルト)

  "direct"

    直接アクセス.

format

  文字列,

  "formatted"

    フォーマットされたファイル (デフォルト)

  "unformatted"

    バイナリレコード.

recl

  整数, `access="direct"`の時, レコードの大きさ(単位:バイト)

unit

  整数, オープンされたファイルの論理ユニット記述子

units

  整数ベクトル, オープンされたファイルの論理ユニット記述子. ユニット 5 および 6 (%io) は入出力デバイスの システムにより保存されます.

typs

  文字列ベクトル, オープンするファイルの型 (C または Fortran).

nams

  文字列ベクトル, オープンするファイルのパス名.

mod

  ファイルをオープンするモード. 3桁 abc により構成.

  Fortranファイル
    a

      0 は整形済み, 1 は未整形(バイナリ)を意味します

    b

      0 は連続アクセス, 1 は直接アクセスを意味します

    c

      0 は "new", 1 は "old", 2 は "scratch" および 3 は "unknown"を意味します

  Cファイル
    a

      1は "r" (読み込み)を意味し, 2 は "w" (書き込み) そして 3 は "a" (追加)を意味します

    b

      ファイルが "+" (更新)モードでオープンされている場合に 1

    b

      ファイルが "b" (バイナリ)モードで オープンされている場合に 1

swap

  自動スワップの切替スイッチ. 自動スワップがオンの場合に swap=1. Fortranファイルの場合,swapは常に0となります.

err

  整数, オープンに失敗した場合は, エラーメッセージ番号 (error 参照). err が省略された場合,エラーメッセージが発行されます.

action

  以下の文字列のどれかとなります:

  "close"

    `units`で指定された 論理ユニット記述子により指定されたファイルを閉じます

  "rewind"

    ファイルの先頭にポインタを置きます

  "backspace"

    ポインタを最後のレコードの先頭に置きます

  "last"

    ポインタを最後のレコードの後に置きます.

## 説明

論理ユニット`unit`を選択し, ファイル`file-name`を管理します.

`[unit [,err]]=file('open', file-name [,status] [,access [,recl]][,format])` により プロパティを指定してファイルをオープンし, ユニット番号`unit`に関連付けることができます. このユニット番号は,この後,このファイルに関する処理や `read`, `write`, `readb`, `writb`,`save`, `load` 関数コールにおいてファイル記述子と同様に使用することができます.

この関数はUTFファイル名をオープンすることができません. この場合,mopenを使用してください.

`file(action,unit)` により,ファイルを閉じたり, カレントのファイルポインタを移動することができます.

`file()` は オープンされたファイルの論理ユニット記述子を返します.この場合, `file('close',file() )` は ユーザにオープンされたファイル(CまたはFortran型)を全て閉じます.

## 例

    u=file('open',TMPDIR+'/foo','unknown')
    for k=1:4
      a=rand(1,4)
      write(u,a)
    end
    file('rewind',u)
    x=read(u,2,4)
    file('close',u)
    //
    u1=file('open',TMPDIR+'/foo','unknown')
    u2=mopen(TMPDIR+'/foo1','wb')
    [units,typs,nams]=file()
    file('close',u1);
    mclose(u2);

## 参照

- save
- load
- write
- read
- writb
- readb
- uigetfile
- mopen
- mclose
- file