Scilab Function
Last update : 16/12/2004

file - file management

### Calling Sequence

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

### Parameters

- `file-name`: string, file name of the file to be opened
- `status`: string, The status of the file to be opened
  - `"new"`: file must not exist new file (default)
  - `"old"`: file must already exists.
  - `"unknown"`: unknown status
  - `"scratch"`: file is to be deleted at end of session
- `access`: string, The type of access to the file
  - `"sequential"` : sequential access (default)
  - `"direct"` : direct access.
- `format`: string,
  - `"formatted"` : for a formatted file (default)
  - `"unformatted"` : binary record.
- `recl`: integer,is the size of records in bytes when `access="direct"`
- `unit`: integer, logical unit descriptor of the opened file
- `units`: integer vector, logical unit descriptor of the opened files. Units 1 5 and 6 are reserved by the system for history file , input and output devices.
- `typs`: Character string vector, type (C or Fortran) of opened files.
- `nams`: Character string vector, pathnames of opened files.
- `mod`: file opening mode. Formed by three digits abc
  - `Fortran files`
    - `a`: 0 stands for formatted and 1 for unformatted (binary)
    - `b`0 stands for sequential acces and 1 for direct access
    - `c`: 0 stands for "new", 1 for "old", 2 for "scratch" and 3 for "unknown"
  - `C files`
    - `a`: is 1 if file has been opened with a "b" (binary) mode
    - `b`: is 1 if file has been opened with a "+" (updating) mode
    - `c`: 1 stands for "r" (read), 2 stands for "w" (write) and 3 for "a" (append)
- `swap`: automatic swap switch. swap=1 if automatic swap is on. swap is always 0 for Fortran files.
- `err`: integer, error message number (see error), if open fails. If err is omitted an error message is issued.
- `action`: is one of the following strings:
  - `"close"` : closes the file(s) given by the logical unit descriptors given in `units`
  - `"rewind"` : puts the pointer at beginning of file
  - `"backspace"` : puts the pointer at beginning of last record.
  - `"last"` : puts the pointer after last record.

### Description

selects a logical unit `unit` and manages the file `file-name`.

`[unit [,err]]=file('open', file-name [,status] [,access [,recl]][,format])` allows to open a file with specified properties and to get the associated unit number `unit`. This unit number may be used for further actions on this file or as file descriptor in `read`, `write`, `readb`, `writb`,`save`, `load` function calls.

`file(action,unit)` allows to close the file , or move the current file pointer .

`file()` returns the logical unit descriptors of the opened files. So `file('close',file() )` closes all user opened files (C or Fortran type).

### Examples

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

### See Also

`save`, `load`, `write`, `read`, `writb`, `readb`, `xgetfile`, `mopen`, `mclose`,