Rev 54917 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/files.Rd% Part of the R package, http://www.R-project.org% Copyright 1995-2011 R Core Development Team% Distributed under GPL 2 or later\name{files}\alias{files}\alias{file.append}\alias{file.copy}\alias{file.create}\alias{file.exists}\alias{file.remove}\alias{file.rename}\alias{file.symlink}\alias{file.link}\title{File Manipulation}\usage{file.create(\dots, showWarnings = TRUE)file.exists(\dots)file.remove(\dots)file.rename(from, to)file.append(file1, file2)file.copy(from, to, overwrite = recursive, recursive = FALSE,copy.mode = TRUE)file.symlink(from, to)file.link(from, to)}\arguments{\item{\dots, file1, file2}{character vectors, containing file names or paths.}\item{from, to}{character vectors, containing file names or paths.For \code{file.copy} and \code{file.symlink} \code{to} canalternatively be the path to a single existing directory.}\item{overwrite}{logical; should existing destination files be overwritten?}\item{showWarnings}{logical; should the warnings on failure be shown?}\item{recursive}{logical. If \code{to} is a directory, shoulddirectories in \code{from} be copied (and their contents).}\item{copy.mode}{logical: should file permission bits be copied wherepossible? This applies to both files and directories.}}\description{These functions provide a low-level interface to the computer'sfile system.}\details{The \code{\dots} arguments are concatenated to form one characterstring: you can specify the files separately or as one vector.All of these functions expand path names: see \code{\link{path.expand}}.\code{file.create} creates files with the given names if they do notalready exist and truncates them if they do. They are created withthe maximal read/write permissions allowed by the\sQuote{\link{umask}} setting (where relevant). By default a warningis given (with the reason) if the operation fails.\code{file.exists} returns a logical vector indicating whether thefiles named by its argument exist. (Here \sQuote{exists} is in thesense of the system's \code{stat} call: a file will be reported asexisting only if you have the permissions needed by \code{stat}.Existence can also be checked by \code{\link{file.access}}, whichmight use different permissions and so obtain a different result.Note that the existence of a file does not imply that it is readable:for that use \code{\link{file.access}}.) What constitutes a\sQuote{file} is system-dependent, but should include directories.(However, directory names must not include a trailing backslash orslash on Windows.) Note that if the file is a symbolic link on aUnix-alike, the result indicates if the link points to an actual file,not just if the link exists.\code{file.remove} attempts to remove the files named in its argument.On most Unix platforms \sQuote{file} includes \emph{empty}directories, symbolic links, fifos and sockets. On Windows,\sQuote{file} means a regular file and not, say, an empty directory.\code{file.rename} attempts to rename files (and \code{from} and\code{to} must be of the same length). Where file permissions allowthis will overwrite an existing element of \code{to}. This is subjectto the limitations of the OS's corresponding system call (seesomething like \command{man 2 rename} on a Unix-alike): in particularin the interpretation of \sQuote{file}: most platforms will not renamefiles across file systems. (On Windows, \code{file.rename} nowadaysworks for files (but not directories) across volumes.)\code{file.append} attempts to append the files named by itssecond argument to those named by its first. The \R subscriptrecycling rule is used to align names given in vectorsof different lengths.\code{file.copy} works in a similar way to \code{file.append} but withthe arguments in the natural order for copying. Copying to existingdestination files is skipped unless \code{overwrite = TRUE}. The\code{to} argument can specify a single existing directory. If\code{copy.mode = TRUE} (added in \R 2.13.0) file read/write/executepermissions are copied where possible, restricted by\sQuote{\link{umask}}. Other security attributes such as ACLs are notcopied.\code{file.symlink} and \code{file.link} make symbolic and hard linkson those file systems which support them. For \code{file.symlink} the\code{to} argument can specify a single existing directory. (Unix andMac OS X native filesystems support both. Windows has hard links onNTFS file systems. What happens on a FAT or SMB-mounted file system isOS-specific.)}\value{These functions return a logical vector indicating whichoperation succeeded for each of the files attempted. Using a missingvalue for a file or path name will always be regarded as a failure.If \code{showWarnings = TRUE}, \code{file.create} will give a warningfor an unexpected failure.}#ifdef windows\note{There is no guarantee that these functions will handle Windowsrelative paths of the form \file{d:path}: try \file{d:./path}instead. In particular, \file{d:} is not recognized as a directory.Nor are \samp{\\\\?\\} prefixes (and similar) supported.Recent versions of Windows have a limited version of symbolic links onNTFS filesystems, but this has not be implemented in\code{file.symlink}, not least because \R is still widely used onWindows XP.Most of these functions accept UTF-8 filepaths not valid in thecurrent locale.}#endif\author{Ross Ihaka, Brian Ripley}\seealso{\code{\link{file.info}}, \code{\link{file.access}}, \code{\link{file.path}},\code{\link{file.show}}, \code{\link{list.files}},\code{\link{unlink}}, \code{\link{basename}},\code{\link{path.expand}}.\code{\link{dir.create}}.\code{\link{Sys.glob}} to expand wildcards in file specifications.\code{\link{file_test}}, \code{\link{Sys.readlink}}.\url{http://en.wikipedia.org/wiki/Hard_link} and\url{http://en.wikipedia.org/wiki/Symbolic_link} for the concepts oflinks and their limitations.}\examples{cat("file A\n", file="A")cat("file B\n", file="B")file.append("A", "B")file.create("A")file.append("A", rep("B", 10))if(interactive()) file.show("A")file.copy("A", "C")dir.create("tmp")file.copy(c("A", "B"), "tmp")list.files("tmp")#ifdef unixsetwd("tmp")file.remove("B")file.symlink(file.path("..", c("A", "B")), ".")setwd("..")#endifunlink("tmp", recursive=TRUE)file.remove("A", "B", "C")}\keyword{file}