% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/reactives.R
\name{reactiveFileReader}
\alias{reactiveFileReader}
\title{Reactive file reader}
\usage{
reactiveFileReader(intervalMillis, session, filePath, readFunc, ...)
}
\arguments{
\item{intervalMillis}{Approximate number of milliseconds to wait between
checks of the file's last modified time. This can be a numeric value, or a
function that returns a numeric value.}

\item{session}{The user session to associate this file reader with, or
\code{NULL} if none. If non-null, the reader will automatically stop when
the session ends.}

\item{filePath}{The file path to poll against and to pass to \code{readFunc}.
This can either be a single-element character vector, or a function that
returns one.}

\item{readFunc}{The function to use to read the file; must expect the first
argument to be the file path to read. The return value of this function is
used as the value of the reactive file reader.}

\item{...}{Any additional arguments to pass to \code{readFunc} whenever it is
invoked.}
}
\value{
A reactive expression that returns the contents of the file, and
automatically invalidates when the file changes on disk (as determined by
last modified time).
}
\description{
Given a file path and read function, returns a reactive data source for the
contents of the file.
}
\details{
\code{reactiveFileReader} works by periodically checking the file's last
modified time; if it has changed, then the file is re-read and any reactive
dependents are invalidated.

The \code{intervalMillis}, \code{filePath}, and \code{readFunc} functions
will each be executed in a reactive context; therefore, they may read
reactive values and reactive expressions.
}
\examples{
\dontrun{
# Per-session reactive file reader
function(input, output, session) {
  fileData <- reactiveFileReader(1000, session, 'data.csv', read.csv)

  output$data <- renderTable({
    fileData()
  })
}

# Cross-session reactive file reader. In this example, all sessions share
# the same reader, so read.csv only gets executed once no matter how many
# user sessions are connected.
fileData <- reactiveFileReader(1000, NULL, 'data.csv', read.csv)
function(input, output, session) {
  output$data <- renderTable({
    fileData()
  })
}
}
}
\seealso{
\code{\link[=reactivePoll]{reactivePoll()}}
}
