Usage
## S3 method for class 'default}(filename, path=NULL, suffix=".tmp", isFile=FALSE, ..., verbose=FALSE)':
pushTemporaryFileundefined
 Appends a temporary suffix to the pathname and, optionally, renames an existing file accordingly.
  In combination with popTemporaryFile(), this method is useful
  for creating a file/writing data to file atomically, by
  first writing to a temporary file which is the renamed.  If for
  some reason the generation of the file was interrupted, for instance
  by a user interrupt or a power failure, then it is only the temporary
  file that is incomplete.
 - filename
 {The filename of the file.}
   - path
 {The path of the file.}
   - suffix
 {The temporary suffix to be appended.}
   - isFile
 {If TRUE, the file must exist and will be renamed
      on the file system.  If FALSE, it is only the pathname string
      that will be modified. For details, see below.}
   - ...
 {Not used.}
   - verbose
 {A logical or Verbose.}
 Returns the pathname with the temporary suffix appended.
 If isFile is FALSE, the pathname where the suffix of the
   temporary pathname has been added is returned.
   If isFile is TRUE, the file is also renamed.
   Then, if the file does not exists or it was not successfully
   renamed, an exception is thrown. 
 createAtomically <- function(pathname, ...) {
  cat("Pathname: ", pathname, "
", sep="");
  # Generate a file atomically, i.e. the file will either be
  # complete or not created at all.  If interrupted while
  # writing, only a temporary file will exist/remain.
  pathnameT <- pushTemporaryFile(pathname);
  cat("Temporary pathname: ", pathnameT, "
", sep="");
  cat(file=pathnameT, "This file was created atomically:
");
  for (kk in 1:10) {
    cat(file=pathnameT, kk, "
", append=TRUE);
    Sys.sleep(0.1);
  }
  cat(file=pathnameT, "END OF FILE
", append=TRUE);
  # Rename the temporary file
  pathname <- popTemporaryFile(pathnameT);
  pathname;
} # createAtomically()
pathname <- tempfile();
tryCatch({
  # Try to interrupt the process while writing...
  pathname <- createAtomically(pathname);
}, interrupt=function(intr) {
  str(intr);
})
# ...and this will throw an exception
bfr <- readLines(pathname);
cat(bfr, sep="
");
 [object Object]
 popTemporaryFile().
utilities
programming
IO