R提供了两个函数来从文件系统中删除文件(和文件夹):
unlink
file.remove
并不完全清楚它们之间的差异,或者在什么情况下使用哪个函数,除了unlink
需要一些其他参数。
阅读这些函数的源代码并没有什么帮助,因为它们都只是调用编译后的C函数。
unlink
和 file.remove
有什么区别?何时应该优先使用 unlink
,或者反过来呢?
R提供了两个函数来从文件系统中删除文件(和文件夹):
unlink
file.remove
并不完全清楚它们之间的差异,或者在什么情况下使用哪个函数,除了unlink
需要一些其他参数。
阅读这些函数的源代码并没有什么帮助,因为它们都只是调用编译后的C函数。
unlink
和 file.remove
有什么区别?何时应该优先使用 unlink
,或者反过来呢?
我的猜测是unlink
在S中存在,因为它引用了Becker、Chambers和Wilks(1988),而file.remove
(和file.copy、file.create等)自R诞生之初就是提供一组通用文件操作函数的一部分。
unlink
对应于一个非常古老的Unix函数(当然也存在于1988年的S版本中):http://en.wikipedia.org/wiki/Unlink_(Unix)
因此,unlink
出于与S的兼容性考虑,file.remove
出于R的一部分,并且两者都得到维护,以支持来自S和R的长期现有代码。除此之外,只需选择最适合您需要(或习惯)的一个即可。
这些函数的主要实际差异在于它们如何处理当前已打开的文件,因此无法立即删除:
unlink()
将文件标记为在任何其他上下文中都未打开时立即删除;file.remove()
保留文件不变,返回 FALSE
,但会抛出警告。unlink
允许使用“globbed”文件名,而 file.remove()
似乎不允许。 - Stuart R. Jefferys
unlink
函数可以删除目录,但是file.remove
函数只能删除空目录,而且在 Windows 系统上无法使用。 - James