file.copy.jm is similar to the R-base file.copy function except that, 
** optionally, the user can specify that younger files should not be overwritten by older files; 
** file.copy.jm creates a destination folder in the case that the destination folder does not exist; 
** read-only files can be copied.  
** If an html file is copied, file.copy.jm automatically copies a sub-folder that contains helper files for this html file.  E.g., if from[i] = "/r/rdoc/all.pairs.htm", then "all.pairs_files" will be appended to the to vector (with as many copies as are needed to accomodate all files in "/r/rdoc/all.pairs_files".  

file.copy.jm(from, to, date.check = TRUE, move = FALSE, 
duplicate.paths = FALSE, resultsFile = "default", 
record.in.GlobalEnv = TRUE, ignoreNonExist = FALSE, 
copy.read.only = TRUE, recursive = duplicate.paths, 
overwrite = (recursive | !date.check), silently = FALSE) 

ARGUMENTS:
from=a string vector whose components can be (a) file names with paths; or (b) names of folder; or a mixture of (a) and (b).  If a folder is specified in the from vector, then all files in the folder will be copied to the corresponding to component.  

to=vector of target file names or target file folders.  Either length(to) = length(from) or length(to) = 1 and to is a folder.  There are several different cases.
** If to designates a single folder and duplicate.paths = TRUE, then the paths leading to each file, from[i], are created under the to folder, and the all files designated by from are copied into these corresponding folders.
** If to designates a single folder and duplicate.paths = FALSE, then all files designated by from are copied into this folder.  
** If to[i] is a file name and from[i] is a file name, then file.copy.jm copies from[i] to to[i].  
** If to[i] is a folder name and from[i] is a file name, then file.copy.jm automatically appends from[i] to to[i] to designate the file to which from[i] should be copied.    
** If from[i] designates an html file (with either a "htm" or "html" extension), then a helper folder with the name "<file name>_files" will automatically be added to the from vector and a corresponding folder name will be added to the to vector.  
** [other cases still need to be described]

If date.check = TRUE (default), then the target file is overwritten if its date of last modification is strictly earlier than that of the source file.  If date.check = FALSE, then the target file is overwritten no matter whether it is older or younger than the source file. 

If move = TRUE, then the source file is deleted after copying it to the target file. Default is move = FALSE.  

If duplicate.paths = FALSE (default), then the files designated by the from vector will be copied to the directories that are defined by the to vector. If duplicate.paths = TRUE, then to must designate a single directory (which may not exist prior to running the file.copy.jm function). In this case, the paths in the from vector will be created under the to directory if they do not already exist, and the files designated in the from vector are copied to the corresponding directories under the to vector.  E.g., if duplicate.paths = TRUE, from = "c:/r/rnote.pdf" and to = "d:/", then rnote.pdf will be copied to the file d:/r/rnote.pdf.  

If record.in.GlobalEnv = TRUE (default), then a dataframe is created in .GlobalEnv that shows the results of the copy operation (both successful and unsuccessful copies).  If resultsFile = "default" (default), the dataframe is named copyRes.yymmdd.hhttss, where year = 20yy, month = mm, day = dd, hour = hh, minute = tt, and second = ss, i.e., the date and time at which the copy operation was finished.  If resultsFiles = "anyName", then the dataframe will be named anyName.  If record.in.GlobalEnv = FALSE, then no dataframe is created.  

If ignoreNonExist = FALSE (default), then file.copy.jm stops without copying any files if any file or directories in the from vector are missing.  If ignoreNonExist = TRUE, then file.copy.jm copies files and directories named in the from vector if they exist, and ignores cases where they do not exist.

If silently = FALSE (default), the function call gives feedback as to the success of the copy operation; if silently = TRUE, then no feedback is given.

If copy.read.only = TRUE (default) and if the file to[i] is read-only, then to[i] is replaced by from[i] provided that the latter is the more recent file, and the result is set to read-only.  If copy.read.only = FALSE and if to[i] is read-only, then to[i] is not replaced by from[i] even if the latter is the more recent file. 

recursive = duplicate.paths (default).  If to is a directory, should directories in from be copied (and their contents)?  Default is recursive = FALSE.  As of 1/2/2014, JM hasn't decided whether it is ever useful to allow recursive and duplicate.paths to differ.  

overwrite = (recursive | !date.check)

If silently = FALSE, then file.copy.jm does not provide feedback to the monitor.  A dataframe showing the copy results is always returned invisibly (whether or not silently is TRUE or FALSE).