Last chance! 50% off unlimited learning
Sale ends in
file.path
() when argument removeUps=FALSE
and
expandLinks="none"
, except that a (character) NA
is
return if any argument is NA.
This function exists on all platforms, not only Windows systems.## S3 method for class 'default':
filePath(..., fsep=.Platform$file.sep, removeUps=TRUE, expandLinks=c("none", "any", "local", "relative", "network"), mustExist=FALSE, verbose=FALSE)
which
in each
step.TRUE
, relative paths, for instance "foo/bar/../"
are shortend into "foo/", but also "./" are removed from the final
pathname, if possible.character
string. If "none"
, Windows
Shortcut files are ignored. If "local"
, the absolute target
on the local file system is used. If "relative"
TRUE
and if the target does not exist, the original
pathname, that is, argument pathname
is returned. In all other
cases the target is returned.TRUE
, extra information is written while reading.character
string.file.exists()
is call while expanding the pathname.
This is used to check if there exists a Windows shortcut file named
'foo.lnk' in 'path/foo/bar'. If it does, 'foo.lnk' has to be followed,
and in other cases 'foo' is ordinary directory.
The file.exists()
is unfortunately a bit slow, which is why
this function appears slow if called many times.expandLinks==TRUE
, each component, call it parent, in
the absolute path is processed from the left to the right as follows:
1. If a "real" directory of name parent exists, it is followed.
2. Otherwise, if Microsoft Windows Shortcut file with name
parent.lnk exists, it is read. If its local target exists, that
is followed, otherwise its network target is followed.
3. If no valid existing directory was found in (1) or (2), the expanded
this far followed by the rest of the pathname is returned quietly.
4. If all of the absolute path was expanded successfully the expanded
absolute path is returned.readWindowsShortcut
().
file.path
().# Default
print(file.path("foo", "bar", "..", "name")) # "foo/bar/../name"
# Shorten pathname, if possible
print(filePath("foo", "bar", "..", "name")) # "foo/name"
print(filePath("foo/bar/../name")) # "foo/name"
# Recognize Windows Shortcut files along the path, cf. Unix soft links
filename <- system.file("data-ex/HISTORY.LNK", package="R.utils")
print(filename)
filename <- filePath(filename, expandLinks="relative")
print(filename)
Run the code above in your browser using DataLab