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