On Mon, 21 Jul 2003 20:02:39 +0200, Uwe Ligges <[EMAIL PROTECTED]> wrote :
> if (!overwrite) { > if (nt > nf) > from <- rep(from, length = nt) > exists <- file.exists(to) > if(sum(exists)) > warning("File(s) \"", paste(to[exists], collapse = ", "), >"\" already exist(s)") > from <- from[!exists] > to <- to[!exists] > } > if (length(to)) { > file.create(to) > file.append(to, from) > } I don't think that gets the return value right. Presumably if you're copying 5 files to 5 files, and two of the destination files already exist, the return should consist of 3 TRUE values and 2 FALSE values. Here's my rewrite: file.copy <- function(from, to, overwrite=FALSE) { if (!(nf <- length(from))) stop("no files to copy from") if (!(nt <- length(to))) stop("no files to copy to") if (nt == 1 && file.exists(to) && file.info(to)$isdir) to <- file.path(to, from) else if (nf > nt) stop("more `from' files than `to' files") if(nt > nf) from <- rep(from, length = nt) if (!overwrite) okay <- !file.exists(to) else okay <- rep(TRUE, length(to)) file.create(to[okay]) okay[okay] <- file.append(to[okay], from[okay]) okay } Duncan Murdoch ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel