我需要复制一个文件。
说,我有这个代码:
outputFile <- 'Path1/out.pdf'
originFile <- 'Path2/origin.pdf'
file.copy(from =originFile, to = outputFile,overwrite=TRUE)
但是,如果 out.pdf(目标文件)已经打开,我有一个权限被拒绝异常。
如何在新副本之前强制关闭/删除目标文件?
在这种情况下,使用 close 或类似的东西没有帮助,因为您没有句柄可以out.pdf
打开,例如在 Acrobat Reader 中。
有两种方法可以解决这个问题(假设是 Windows,我不知道如何在其他系统中处理这个问题)。
a) 使用 Sumatra Viewer;它是唯一一个不会锁定 pdf 文件的相当可靠的查看器。这是 RStudio 使用的方法。
b)pdfpos
通过 system() 调用使用来关闭文件。有关示例,请参见此处。在 RStudio 出现之前,我使用了这种方法,但它需要在 Acrobat Reader/Full Version 的每个新版本上进行调整,并运行 perl 安装。应该在其他操作系统上工作。
看看?close
- 这些是在 R 中管理文件连接的命令。close(outputFile)
可能就是你所需要的。closeAllConnections()
如果您同时打开多个文件,则核弹很多。
(当然,如果文件已被 R 之外的另一个程序打开,例如 pdf 阅读器,您将不得不在 R 之外关闭它。)