1 2 3.orphanTmpFiles <- function() { 4 5 objects <- ls(envir=globalenv()) 6 ftmp <- list() 7 for (i in seq_along(objects)) { 8 x <- get(objects[i], envir=globalenv()) 9 if (inherits(x, "SpatRaster")) { 10 ftmp[[i]] <- sources(x)$source 11 } 12 } 13 ftmp <- unique(unlist(ftmp)) 14 ftmp <- ftmp[ftmp != ""] 15 pattrn <- "^spat_.*tif$" 16 i <- grep(pattrn, basename(ftmp)) 17 ftmp <- ftmp[i] 18 ff <- list.files(tempdir(), pattern=pattrn, full.names=TRUE) 19 i <- !(basename(ff) %in% basename(ftmp)) 20 ff[i] 21 22} 23 24 25 26 27tmpFiles <- function(current=TRUE, orphan=FALSE, old=FALSE, remove=FALSE) { 28 29 if (!(old | current | orphan)) { 30 error("tmpFiles", "at least one of 'orphan', 'current' and 'old' must be set to TRUE") 31 } 32 33 opt <- spatOptions() 34 d <- opt$tempdir 35 f <- NULL 36 if (old) { 37 if (normalizePath(tempdir()) != normalizePath(d)) { 38 warn("tmpFiles", "old files can only be found if terra uses the R tempdir") 39 } else { 40 f <- list.files(dirname(d), recursive=TRUE, pattern="^spat_", full.names=TRUE) 41 f <- grep("Rtmp", f, value=TRUE) 42 if ((length(f) > 0) && (!current)) { 43 i <- grep(d, f) 44 if (length(i) > 0) { 45 f <- f[-i] 46 } 47 } 48 } 49 } 50 51 if (current) { 52 ff <- list.files(d, pattern="^spat", full.names=TRUE) 53 f <- c(f, ff) 54 } else if (orphan) { 55 fo <- .orphanTmpFiles() 56 f <- c(f, fo) # for if old=TRUE 57 } 58 59 60 if (remove) { 61 file.remove(f) 62 return(invisible(f)) 63 } else { 64 return(f) 65 } 66} 67 68