當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。