2012-11-25 61 views
2

我需要複製文件。強制關閉已打開的文件進行復制

說,我有這樣的代碼:

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

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

但是,如果out.pdf(目標文件)已經打開我有一個權限被拒絕例外。

如何在新副本之前強制關閉/刪除目標文件?

回答

1

使用相近或相似沒有幫助的東西這種情況下,因爲你沒有處理out.pdf例如在Acrobat Reader中打開。

有兩種解決此問題的方法(假設Windows,我不知道如何在其他系統中處理此問題)。

a)使用Sumatra Viewer;它是唯一不會對PDF文件鎖定的合理可靠的查看器。這是RStudio使用的方法。

b)通過system()調用關閉文件使用pdfpos。例如,請參閱here。在RStudio出現之前,我使用了這種方法,但它需要對每個新版本的Acrobat Reader /完整版以及正在運行的perl安裝進行調整。應該在其他操作系統上工作。

+0

謝謝!但是您有使用Sumatra Viewer的代碼示例嗎? – agstudy

+0

無需代碼,安裝Sumatra Viewer並將其定義爲標準查看器。如果您不想這樣做,請使用方法2。 –

0

看看?close - 這些是管理R內文件連接的命令。close(outputFile)可能是您所需要的。 closeAllConnections()如果您同時打開多個文件,則會批量許可。

(當然,如果該文件已被另一個程序的R外面被打開,例如PDF閱讀器,你將不得不關閉它R.以外)