确定某个字符是否为有效文件路径的最佳方法是什么?因此CheckFilePath( "my*file.csv")
将返回FALSE
(在Windows *上为无效字符),而CheckFilePath( "c:\\users\\blabla\\desktop\\myfile.csv" )
将返回TRUE
。
请注意,文件路径可以有效但磁盘上不存在。
答案 0 :(得分:2)
这是save
用于执行该功能的代码:
....
else file(file, "wb")
on.exit(close(con))
}
else if (inherits(file, "connection"))
con <- file
else stop("bad file argument")
......
答案 1 :(得分:1)
也许file.exists()
就是你所追求的?从帮助页面:
file.exists returns a logical vector indicating whether the files named by its argument exist.
(Here ‘exists’ is in the sense of the system's stat call: a file will be reported as existing only
if you have the permissions needed by stat. Existence can also be checked by file.access, which
might use different permissions and so obtain a different result.
还可以使用其他一些用于访问计算机文件系统的功能,也可以在帮助页面上参考。
答案 2 :(得分:1)
不,没有办法(可靠)。我没有在Windows和Linux中都看到操作系统界面来测试它。您通常会尝试创建文件并获取失败消息,或尝试读取文件并获取“不存在”的消息。
因此,您应该依赖操作系统来告诉您是否可以对文件执行操作(通常会读取和/或写入)。
我想不出除测验之外的其他原因(“输入有效的完全限定的Windows文件路径:”)来想知道这个。
答案 3 :(得分:0)
我建议尝试使用checkPathForOutput
软件包提供的checkmate
功能。如链接文档中所述,该功能:
检查文件路径是否可以安全地用于创建文件和写入文件。
checkmate::checkPathForOutput(x = tempfile(pattern = "sample_test_file", fileext = ".tmp"))
# [1] TRUE
checkmate::checkPathForOutput(x = "c:\\users\\blabla\\desktop\\myfile.csv")
# [1] TRUE
\0
字符:
checkmate::check_path_for_output("my\0file.csv")
# Error: nul character not allowed (line 1)
1 尚未在Windows上进行测试,但是查看代码checkmate::check_path_for_output
则表明该功能也应在MS Windows系统上正常工作。