The core package contract is a byte-oriented filesystem handle with explicit service selection.
library(Ropendal)
# Local filesystem via constructor.
root <- file.path(tempdir(), "ropendal-abstract-fs")
unlink(root, recursive = TRUE)
dir.create(root, recursive = TRUE)
fs <- opendal("fs", root = root)
# The same contract via URI. Put the local root in the query string so the
# example is portable across POSIX and Windows path syntax.
uri <- paste0("fs:///?root=", utils::URLencode(root, reserved = TRUE))
uri_fs <- opendal_uri(uri)
isTRUE(identical(fs_info(uri_fs)$scheme, fs_info(fs)$scheme))
#> [1] TRUEAll paths are normalized to the handle root before any operation, so clients can use portable relative paths.
runtime_config(), layer_concurrent_limit(),
and layer_timeout() are attached at construction time so
all operations share the same behavior.
Failed object creation returns values instead of throwing, which keeps remote control flow explicit.