files2 {base} | R Documentation |
These functions provide a low-level interface to the computer's file system.
dir.create(path, showWarnings = TRUE, recursive = FALSE, mode = "0777") Sys.chmod(paths, mode = "0777", use_umask=TRUE) Sys.umask(mode = NA)
path |
a character vector containing a single path name. Tilde
expansion (see |
paths |
character vectors containing file or directory paths. Tilde
expansion (see |
showWarnings |
logical; should the warnings on failure be shown? |
recursive |
logical. Should elements of the path other than the
last be created? If true, like the Unix command |
mode |
the mode to be used on Unix-alikes: it will be
coerced by |
use_umask |
logical: should the mode be restricted by the
|
dir.create
creates the last element of the path, unless
recursive = TRUE
. Trailing path separators are discarded.
On Windows drives are allowed in the path specification and unless
the path is rooted, it will be interpreted relative to the current
directory on that drive. mode
is ignored on Windows.
One of the idiosyncrasies of Windows is that directory creation may
report success but create a directory with a different name, for
example dir.create("G.S.")
creates ‘"G.S"’. This is
undocumented, and what are the precise circumstances is unknown (and
might depend on the version of Windows). Also avoid directory names
with a trailing space.
Sys.chmod
sets the file permissions of one or more files.
The interpretation of mode
in the Windows system functions is
non-POSIX and only supports setting the read-only attribute of the
file. So R interprets mode
to mean set read-only if and only
if (mode & 0200) == 0
(interpreted in octal). Windows has a much
more extensive system of file permissions on some file systems
(e.g. versions of NTFS) which are unrelated to this system call.
Sys.umask
sets the umask
and returns the previous value:
as a special case mode = NA
just returns the current value.
All files on Windows are regarded as readable, and files being
executable is not a Windows concept. So umask
only controls
whether a file is writable: a setting of "200"
makes files (but
not directories) created subsequently read-only.
How modes are handled depends on the file system, even on Unix-alikes (although their documentation is often written assuming a POSIX file system). So treat documentation cautiously if you are using, say, a FAT/FAT32 or network-mounted file system.
dir.create
and Sys.chmod
return invisibly a logical vector
indicating if the operation succeeded for each of the files attempted.
Using a missing value for a path name will always be regarded as a
failure. dir.create
indicates failure if the directory already
exists. If showWarnings = TRUE
, dir.create
will give a
warning for an unexpected failure (e.g. not for a missing value nor
for an already existing component for recursive = TRUE
).
Sys.umask
returns the previous value of the umask
,
as a length-one object of class "octmode"
: the
visibility flag is off unless mode
is NA
.
See also the section in the help for file.exists
on
case-insensitive file systems for the interpretation of path
and paths
.
There is no guarantee that these functions will handle Windows relative paths of the form ‘d:path’: try ‘d:./path’ instead. In particular, ‘d:’ is not recognized as a directory. Nor are \\?\ prefixes (and similar) supported.
UTF-8-encoded dirnames not valid in the current locale can be used.
Ross Ihaka, Brian Ripley
file.info
, file.exists
, file.path
,
list.files
, unlink
,
basename
, path.expand
.
## Not run: ## Fix up maximal allowed permissions in a file tree Sys.chmod(list.dirs("."), "777") f <- list.files(".", all.files = TRUE, full.names = TRUE, recursive = TRUE) Sys.chmod(f, (file.info(f)$mode | "664")) ## End(Not run)