Rev 68017 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/serialize.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2014 R Core Team% Distributed under GPL 2 or later\name{serialize}\alias{serialize}\alias{unserialize}\title{Simple Serialization Interface}\description{A simple low-level interface for serializing to connections.}\usage{serialize(object, connection, ascii, xdr = TRUE,version = NULL, refhook = NULL)unserialize(connection, refhook = NULL)}\arguments{\item{object}{\R object to serialize.}\item{connection}{an open \link{connection} or (for \code{serialize})\code{NULL} or (for \code{unserialize}) a raw vector(see \sQuote{Details}).}\item{ascii}{a logical. If \code{TRUE} or \code{NA}, an ASCIIrepresentation is written; otherwise (default) a binary one.See also the comments in the help for \code{\link{save}}.}\item{xdr}{a logical: if a binary representation is used, should abig-endian one (XDR) be used?}\item{version}{the workspace format version to use. \code{NULL}specifies the current default version (2). Versions prior to 2 are notsupported, so this will only be relevant when there are later versions.}\item{refhook}{a hook function for handling reference objects.}}\details{The function \code{serialize} serializes \code{object} to the specifiedconnection. If \code{connection} is \code{NULL} then \code{object} isserialized to a raw vector, which is returned as the result of\code{serialize}.Sharing of reference objects is preserved within the object but notacross separate calls to \code{serialize}.\code{unserialize} reads an object (as written by \code{serialize})from \code{connection} or a raw vector.The \code{refhook} functions can be used to customize handling ofnon-system reference objects (all external pointers and weakreferences, and all environments other than namespace and packageenvironments and \code{.GlobalEnv}). The hook function for\code{serialize} should return a character vector for references itwants to handle; otherwise it should return \code{NULL}. The hook for\code{unserialize} will be called with character vectors supplied to\code{serialize} and should return an appropriate object.For a text-mode connection, the default value of \code{ascii} is setto \code{TRUE}: only ASCII representations can be written to text-modeconnections and attempting to use \code{ascii = FALSE} will throw anerror.The format consists of a single line followed by the data: the firstline contains a single character: \code{X} for binary serializationand \code{A} for ASCII serialization, followed by a new line. (Theformat used is identical to that used by \code{\link{readRDS}}.)The option of \code{xdr = FALSE} was introduced in \R 2.15.0. Asalmost all systems in current use are little-endian, this can be usedto avoid byte-shuffling at both ends when transferring data from onelittle-endian machine to another. Depending on the system, this canspeed up serialization and unserialization by a factor of up to 3x.}\section{Warning}{These functions have provided a stable interface since \R 2.4.0 (whenthe storage of serialized objects was changed from character to rawvectors). However, the serialization format may change in futureversions of \R, so this interface should not be used for long-termstorage of \R objects.On 32-bit platforms a raw vector is limited to \eqn{2^{31} - 1}{2^31 -1} bytes, but \R objects can exceed this and their serializations willnormally be larger than the objects.}\value{For \code{serialize}, \code{NULL} unless \code{connection = NULL}, whenthe result is returned in a raw vector.For \code{unserialize} an \R object.}\seealso{\code{\link{saveRDS}} for a more convenient interface to serialize anobject to a file or connection.\code{\link{save}} and \code{\link{load}} to serialize and restore oneor more named objects.The \sQuote{R Internals} manual for details of the format used.}\examples{x <- serialize(list(1,2,3), NULL)unserialize(x)## see also the examples for saveRDS}\keyword{file}\keyword{connection}