2

我需要复制一个文件。

说,我有这个代码:

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

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

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

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

4

2 回答 2

1

在这种情况下,使用 close 或类似的东西没有帮助,因为您没有句柄可以out.pdf打开,例如在 Acrobat Reader 中。

有两种方法可以解决这个问题(假设是 Windows,我不知道如何在其他系统中处理这个问题)。

a) 使用 Sumatra Viewer;它是唯一一个不会锁定 pdf 文件的相当可靠的查看器。这是 RStudio 使用的方法。

b)pdfpos通过 system() 调用使用来关闭文件。有关示例,请参见此处。在 RStudio 出现之前,我使用了这种方法,但它需要在 Acrobat Reader/Full Version 的每个新版本上进行调整,并运行 perl 安装。应该在其他操作系统上工作。

于 2012-11-25T09:24:09.553 回答
0

看看?close- 这些是在 R 中管理文件连接的命令。close(outputFile)可能就是你所需要的。closeAllConnections()如果您同时打开多个文件,则核弹很多。

(当然,如果文件已被 R 之外的另一个程序打开,例如 pdf 阅读器,您将不得不在 R 之外关闭它。)

于 2012-11-25T08:44:47.770 回答