尽管在list.files中,为什么file.exists返回FALSE?

时间:2017-05-24 13:26:17

标签: r windows file-access

我有一个文件x出现在目录中,list.files

证明了这一点
x <- "./data-raw/paths/calculate-route-by-FROM-TO/2017-05-2075--FROM-Flinders-Street-Railway-Station--Melbourne-Victoria-3004--VIC--TO-Melbourne-Sports-Aquatic-Centre--30-Aughtie-Dr--Melbourne-VIC-3206--VIC-csv"
x %in% list.files("./data-raw/paths", recursive = TRUE, full.names = TRUE)
# [1] TRUE
file.exists(x)
# [1] FALSE

请注意,x缺少扩展程序,但我在?file.exists中找不到这样的警告:

  

file.exists返回一个逻辑向量,指示其参数命名的文件是否存在。 (此处'存在'是系统stat调用的意义:只有当您拥有stat所需的权限时,文件才会被报告为存在。存在也可以由{{1}检查可能使用不同的权限,因此获得不同的结果。请注意,文件的存在并不意味着它是可读的:对于那个使用file.access。)'文件'的构成取决于系统,但应该包括目录。 (但是,目录名称在Windows上不得包含尾部反斜杠或斜杠。)请注意,如果文件是类似Unix的符号链接,则结果表明链接是否指向实际文件,而不仅仅是链接是否存在。最后,请注意存在检查R对象是否存在的不同函数。

文档中唯一的提示是访问限制可能会导致file.access,而FALSE确实是file.access(x)但我似乎可以访问该文件(以及其他非常类似的文件)不受影响的文件。)

1 个答案:

答案 0 :(得分:4)

Windows的文件名长度(260个字符)有一个上限,-1超过了。缩短文件会导致x返回file.exists