Skip to contents

vsi_read_dir() abstracts access to directory contents. It returns a character vector containing the names of files and directories in this directory. With recursive = TRUE, reads the list of entries in the directory and subdirectories. This function is a wrapper for VSIReadDirEx() and VSIReadDirRecursive() in the GDAL Common Portability Library.

Usage

vsi_read_dir(path, max_files = 0L, recursive = FALSE, all_files = FALSE)

Arguments

path

Character string. The relative or absolute path of a directory to read.

max_files

Integer scalar. The maximum number of files after which to stop, or 0 for no limit (see Note). Ignored if recursive = TRUE.

recursive

Logical scalar. TRUE to read the directory and its subdirectories. Defaults to FALSE.

all_files

Logical scalar. If ‘FALSE’ (the default), only the names of visible files are returned (following Unix-style visibility, that is files whose name does not start with a dot). If ‘TRUE’, all file names will be returned.

Value

A character vector containing the names of files and directories in the directory given by path. The listing is in alphabetical order, and does not include the special entries '.' and '..' even if they are present in the directory. An empty string ("") is returned if path does not exist.

Note

If max_files is set to a positive number, directory listing will stop after that limit has been reached. Note that to indicate truncation, at least one element more than the max_files limit will be returned. If the length of the returned character vector is lesser or equal to max_files, then no truncation occurred. The max_files parameter is ignored when recursive = TRUE.

Examples

# regular file system for illustration
data_dir <- system.file("extdata", package="gdalraster")
vsi_read_dir(data_dir)
#>  [1] "LF20_EVC_220.csv"          "LF20_EVH_220.csv"         
#>  [3] "LF20_EVT_220.csv"          "LF20_F40_220.csv"         
#>  [5] "int64.tif"                 "metadata.zip"             
#>  [7] "poly_multipoly.dbf"        "poly_multipoly.prj"       
#>  [9] "poly_multipoly.shp"        "poly_multipoly.shx"       
#> [11] "small_world_and_byte.gpkg" "sr_b4_20200829.tif"       
#> [13] "sr_b5_20200829.tif"        "sr_b6_20200829.tif"       
#> [15] "storm_lake.lcp"            "storm_lake.prj"           
#> [17] "storml_elev.tif"           "storml_evc.tif"           
#> [19] "storml_evh.tif"            "storml_evt.tif"           
#> [21] "storml_pts.csv"            "storml_tcc.tif"           
#> [23] "test.geojson"              "ynp_fires_1984_2022.gpkg"