强制关闭已打开的文件以进行复制

时间:2012-11-25 04:50:15

标签: r file io copy

我需要复制一个文件。

说,我有这段代码:

outputFile <- 'Path1/out.pdf'
originFile <- 'Path2/origin.pdf'

file.copy(from =originFile, to = outputFile,overwrite=TRUE)

但是,如果out.pdf(目标文件)已经打开,我有权限被拒绝例外。

如何在新副本之前强制关闭/删除目标文件?

2 个答案:

答案 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之外将其关闭。)

相关问题