首页 > 解决方案 > 如何删除R包栅格中已删除对象的临时文件

问题描述

由于我使用大型 RasterBrick 对象,因此这些对象不能存储在内存中,而是作为临时文件存储在当前临时文件目录 tempdir() 中,或者确切地说是存储在子文件夹“raster”中。由于文件很大,删除未使用对象的临时文件会非常好。

如果我删除我不再需要的对象

rm(列表=ls(模式=“xxx”)

临时文件仍然存在。据我了解,垃圾收集 gc() 对此没有影响,因为它对硬盘驱动器没有影响。临时文件的自动给定名称与对象名称没有任何关系。因此,不可能通过类似的代码删除它们

raster_temp_dir <- paste(tempdir(), "/raster", sep="") files_to_be_removed <- list.files(rastertemp, pattern="xxx", full.names=T)

不幸的是,仍在使用的对象文件不是只读的。因此,我还将通过运行删除我仍然需要的对象:

files_to_be_removed <- list.files(rastertemp, full.names=T)

是否有人已经解决了这个问题或有任何解决方法的想法?如果能以某种方式区分未使用和已使用的对象,那将是完美的。由于这不太可能实现绕道,因此可以手动命名 Raster 对象的临时文件,但我也没有遇到过此选项,因为文件名参数只能在将文件写入硬盘时使用,而不能在临时文件时使用创建文件(据我所知)。

谢谢!

标签: robjecttemporary-files

解决方案


我认为您正在寻找的功能是file.remove(). 只需将带有要删除的文件名的向量传递给它。


推荐阅读