Scilab Function

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

### See Also

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