如何检查是否可以写入特定文件名?理想情况下,我想要一个与 file.exists() 以相同方式工作的函数 - 它返回 TRUE 或 FALSE,并且在测试时不会吐出任何错误。
理想的例子:
filename = "X:/an/invalid/path"
file.writable(filename) # returns FALSE
我还没有找到一个已经这样做的函数,也无法真正考虑如何去做。
一种想法是尝试将一些垃圾数据写入
filename
,但我无法弄清楚使用 try()
的复杂性或 tryCatch()
以避免出现大量错误消息。这也有覆盖文件名的缺点,您可能不希望发生这种情况。
最佳答案
编辑
查看@Marek 建议的函数后,发现已经有一个函数可以在名为 file.access
的基数中执行此操作。 .如果您阅读警告,他们会讨论@KonradRudolph 在评论中提到的问题(即文件访问可以更改)。
所以,你需要做的就是
## Mode 2 for write permission
file.access(filename, mode=2) # 0 success / -1 failure
执行您的建议(正如@NickK 指出的那样,这将覆盖文件!)
file.writable <- function(fname)
tryCatch({
suppressWarnings(write.table(1, fname))
}, error=function(e) FALSE)
filename = "X:/an/invalid/path"
file.writable(filename)
# [1] FALSE
关于r - 如何检查文件名在R中是否可写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31212723/