R: Ascertain File Accessibility

file.access {base} | R Documentation

## Ascertain File Accessibility

### Description

Utility function to access information about files on the user's file systems.

### Usage

    file.access(names, mode = 0)

### Arguments

`names` | character vector containing file names. Tilde-expansion will be done: see `path.expand`.
`mode` | integer specifying access mode required: see ‘Details’.

### Details

The `mode` value can be the exclusive or of the following values

0

  test for existence.

1

  test for execute permission.

2

  test for write permission.

4

  test for read permission.

This function uses the C function `_access` in ‘msvcrt.dll’, but was written using Win32 API functions.

Windows does not have the concept of an ‘executable file’, so this function regards directories and files with extension ‘.exe’, ‘.bat’, ‘.cmd’ and ‘.com’ as executable. (`system` and `Sys.which` make the same assumption.)

UTF-8-encoded file names not valid in the current locale can be used.

Please note that it is not a good idea to use this function to test before trying to open a file. On a multi-tasking system, it is possible that the accessibility of a file will change between the time you call `file.access()` and the time you try to open the file. It is better to wrap file open attempts in `try`.

### Value

An integer vector with values `0` for success and `-1` for failure.

### Note

This is intended as a replacement for the S-PLUS function `access`, a wrapper for the C function of the same name, which explains the return value encoding. Note that the return value is false for success.

### See Also

`file.info` for more details on permissions, `Sys.chmod` to change permissions, and `try` for a ‘test it and see’ approach.

`file_test` for shell-style file tests.

### Examples

    fa <- file.access(dir("."))
    table(fa) # count successes & failures
    d <- dir(file.path(R.home(), "bin"))
    df <- dir(file.path(R.home(), "bin"), full.names = TRUE)
    d[file.access(df, 0) == 0] # all exist
    d[file.access(df, 1) == 0] # some are executable, some are not
    d[file.access(df, 4) == 0] # hopefully all are readable
    d[file.access(df, 2) == 0] # they may or may not be writable

[Package base version 4.0.5 Index]