% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/filesystem.R
\docType{class}
\name{FileSystem}
\alias{FileSystem}
\alias{LocalFileSystem}
\alias{S3FileSystem}
\alias{SubTreeFileSystem}
\title{FileSystem classes}
\description{
\code{FileSystem} is an abstract file system API,
\code{LocalFileSystem} is an implementation accessing files
on the local machine. \code{SubTreeFileSystem} is an implementation that delegates
to another implementation after prepending a fixed base path
}
\section{Factory}{


\code{LocalFileSystem$create()} returns the object and takes no arguments.

\code{SubTreeFileSystem$create()} takes the following arguments:
\itemize{
\item \code{base_path}, a string path
\item \code{base_fs}, a \code{FileSystem} object
}

\code{S3FileSystem$create()} optionally takes arguments:
\itemize{
\item \code{anonymous}: logical, default \code{FALSE}. If true, will not attempt to look up
credentials using standard AWS configuration methods.
\item \code{access_key}, \code{secret_key}: authentication credentials. If one is provided,
the other must be as well. If both are provided, they will override any
AWS configuration set at the environment level.
\item \code{session_token}: optional string for authentication along with
\code{access_key} and \code{secret_key}
\item \code{role_arn}: string AWS ARN of an AccessRole. If provided instead of \code{access_key} and
\code{secret_key}, temporary credentials will be fetched by assuming this role.
\item \code{session_name}: optional string identifier for the assumed role session.
\item \code{external_id}: optional unique string identifier that might be required
when you assume a role in another account.
\item \code{load_frequency}: integer, frequency (in seconds) with which temporary
credentials from an assumed role session will be refreshed. Default is
900 (i.e. 15 minutes)
\item \code{region}: AWS region to connect to. If omitted, the AWS library will
provide a sensible default based on client configuration, falling back
to "us-east-1" if no other alternatives are found.
\item \code{endpoint_override}: If non-empty, override region with a connect string
such as "localhost:9000". This is useful for connecting to file systems
that emulate S3.
\item \code{scheme}: S3 connection transport (default "https")
\item \code{background_writes}: logical, whether \code{OutputStream} writes will be issued
in the background, without blocking (default \code{TRUE})
}
}

\section{Methods}{

\itemize{
\item \verb{$GetFileInfo(x)}: \code{x} may be a \link{FileSelector} or a character
vector of paths. Returns a list of \link{FileInfo}
\item \verb{$CreateDir(path, recursive = TRUE)}: Create a directory and subdirectories.
\item \verb{$DeleteDir(path)}: Delete a directory and its contents, recursively.
\item \verb{$DeleteDirContents(path)}: Delete a directory's contents, recursively.
Like \verb{$DeleteDir()},
but doesn't delete the directory itself. Passing an empty path (\code{""}) will
wipe the entire filesystem tree.
\item \verb{$DeleteFile(path)} : Delete a file.
\item \verb{$DeleteFiles(paths)} : Delete many files. The default implementation
issues individual delete operations in sequence.
\item \verb{$Move(src, dest)}: Move / rename a file or directory. If the destination
exists:
if it is a non-empty directory, an error is returned
otherwise, if it has the same type as the source, it is replaced
otherwise, behavior is unspecified (implementation-dependent).
\item \verb{$CopyFile(src, dest)}: Copy a file. If the destination exists and is a
directory, an error is returned. Otherwise, it is replaced.
\item \verb{$OpenInputStream(path)}: Open an \link[=InputStream]{input stream} for
sequential reading.
\item \verb{$OpenInputFile(path)}: Open an \link[=RandomAccessFile]{input file} for random
access reading.
\item \verb{$OpenOutputStream(path)}: Open an \link[=OutputStream]{output stream} for
sequential writing.
\item \verb{$OpenAppendStream(path)}: Open an \link[=OutputStream]{output stream} for
appending.
}
}

\section{Active bindings}{

\itemize{
\item \verb{$type_name}: string filesystem type name, such as "local", "s3", etc.
\item \verb{$region}: string AWS region, for \code{S3FileSystem} and \code{SubTreeFileSystem}
containing a \code{S3FileSystem}
\item \verb{$base_fs}: for \code{SubTreeFileSystem}, the \code{FileSystem} it contains
\item \verb{$base_path}: for \code{SubTreeFileSystem}, the path in \verb{$base_fs} which is considered
root in this \code{SubTreeFileSystem}.
}
}

