file

Scilab Function
Last update : 25/04/2007

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` ,