复制文件,根据需要创建目录

时间:2019-10-02 04:07:02

标签: r

类似于https://stackoverflow.com/a/10268255/,当使用file.copy时,我想要一个自动创建子目录的函数。当前我遇到了错误:

In file.copy( ... :
  'recursive' will be ignored as 'to' is not a single existing directory

不幸的是使用了像这样的函数:

my.file.copy<- function(from, to, ...) {
    todir <- dirname(to)
    if (!isTRUE(file.info(todir)$isdir)) dir.create(todir, recursive=TRUE)
    file.copy(from = from,  to = to, ...)
}

不起作用,因为dirname是目录,则to会剥离最后一个子目录。

1 个答案:

答案 0 :(得分:1)

根据您将如何向函数传递to参数,我们可以使用其中一种。

1)如果要仅使用目录名称传递to,并且希望它使用from参数中的文件名,则可以使用以下函数

my.file.copy_dir <- function(from, to, ...) {
   if (!dir.exists(to))  dir.create(to, recursive = TRUE) 
   file.copy(from = from,  to = paste0(to, basename(from)), ...)
}

2)如果您要将to作为新文件名的完整路径传递,我们可以使用

my.file.copy_file <- function(from, to, ...) {
   if (!dir.exists(dirname(to)))  dir.create(dirname(to), recursive = TRUE) 
   file.copy(from = from,  to = to, ...)
}

并将它们用作:

my.file.copy_dir("/path/of/file/report.pdf", "/new/path/of/file/")

my.file.copy_file("/path/of/file/report.pdf", "/new/path/of/file/abc.pdf")
相关问题