file ファイル管理

## 呼び出し手順

                [unit, err] = file("open", file-name [,status] [,access [,recl]] [,format])
                file("close", unit)
                file("rewind", unit)
                file("backspace", unit)
                file("last", unit)
                [units, typ, nams, mod, swap] = file()
                [units, typ, nams, mod, swap] = file(unit)

## パラメータ

file-name

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

  この関数は、ASCII以外のUTF文字（アクセント付きなど）を含むパスまたは名前のファイルを開くことはできません. この場合,mopenを使用してください.
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
  c | ファイルが "b" (バイナリ)モードで オープンされている場合に 1

swap

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

err

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

  65 | File already used
  66 | Too many files opened!
  67 | Unknown file format
  240 | The file already exists or directory write access denied.
  241 | The file does not exist or read access denied.

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` 関数コールにおいてファイル記述子と同様に使用することができます.

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

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

To test whether a file #`id` is opened, `file(id)~=[]` may be used.

## 例

    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);

## 参照

- isfile
- read
- readb
- write
- writb
- mopen
- save
- load
- uigetfile

## 履歴

6.0.0 stderr is inserted in the output of file() as units(1)=0, typ(1)="STD" and nams(1)="stderr".