当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R files2 目录和文件权限的操作


R语言 files2 位于 base 包(package)。

说明

这些函数为计算机文件系统提供了低级接口。

用法

dir.exists(paths)
dir.create(path, showWarnings = TRUE, recursive = FALSE, mode = "0777")
Sys.chmod(paths, mode = "0777", use_umask = TRUE)
Sys.umask(mode = NA)

参数

path

包含单个路径名的字符向量。波形符扩展(参见path.expand)已完成。

paths

包含文件或目录路径的字符向量。波形符扩展(参见path.expand)已完成。

showWarnings

逻辑性;是否应该显示失败警告?

recursive

合乎逻辑的。是否应该创建除最后一个之外的路径元素?如果为 true,则类似于 Unix 命令 mkdir -p

mode

在 Unix-alikes 上使用的模式:它将被 as.octmode 强制。对于Sys.chmod,它沿着paths回收。

use_umask

逻辑:模式是否应该受umask 设置限制?

细节

dir.exists 检查路径是否存在(与 file.exists 含义相同)并且是目录。

dir.create 创建路径的最后一个元素,除非 recursive = TRUE 。尾随路径分隔符将被丢弃。该模式将通过umask 设置进行修改,方式与系统函数mkdir 相同。可以设置的模式是OS-dependent,假设使用超过三个八进制数字是不安全的。有关更多详细信息,请参阅有关系统调用 mkdir 的操作系统文档,例如man 2 mkdir(而不是在该名称的命令行实用程序上)。

Windows 的特性之一是目录创建可能会报告成功,但会创建一个具有不同名称的目录,例如dir.create("G.S.")创建‘"G.S"’。这是没有记录的,并且确切的情况未知(并且可能取决于 Windows 的版本)。还要避免目录名称尾随空格。

Sys.chmod 设置一个或多个文件的文件权限。系统可能不支持它(当发出警告时)。有关如何解释模式的信息,请参阅 dir.create 的注释。更改符号链接的模式不太可能起作用(也没有必要)。有关更多详细信息,请参阅有关系统调用 chmod 的操作系统文档,例如man 2 chmod(而不是该名称的命令行实用程序上的)。这是否会更改符号链接或其目标的权限是OS-dependent(尽管更改目标更为常见,并且 POSIX 不支持符号链接模式:但基于 BSD 的 Unix 则支持)。

Sys.umask 设置 umask 并返回先前的值:作为特殊情况,mode = NA 仅返回当前值。它可能不受支持(当发出警告并返回"0"时)。有关更多详细信息,请参阅有关系统调用 umask 的操作系统文档,例如man 2 umask

如何处理模式取决于文件系统,甚至取决于 Unix 类系统(尽管它们的文档通常是假设 POSIX 文件系统编写的)。因此,如果您使用的是 FAT/FAT32 或 network-mounted 文件系统,请谨慎对待文档。

请参阅files 了解如何解释带有标记编码的文件路径。

dir.exists 返回 TRUEFALSE 值(不带名称)的逻辑向量。

dir.createSys.chmod 不可见地返回一个逻辑向量,指示尝试的每个文件的操作是否成功。使用缺失值作为路径名将始终被视为失败。如果目录已存在,dir.create 表示失败。如果 showWarnings = TRUEdir.create 将对意外失败发出警告(例如,不会针对缺失值或 recursive = TRUE 的现有组件发出警告)。

Sys.umask 返回 umask 的先前值,作为类 "octmode" 的长度为 1 的对象:可见性标志关闭,除非 modeNA

另请参阅帮助中有关不区分大小写的文件系统的 file.exists 的部分,以了解 pathpaths 的解释。

例子

## 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.mode(f) | "664"))

## End(Not run)

作者

Ross Ihaka, Brian Ripley

也可以看看

file.infofile.existsfile.pathlist.filesunlinkbasenamepath.expand

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Manipulation of Directories and File Permissions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。