R: (De)compress I/O Through Connections

gzcon {base} | R Documentation

## (De)compress I/O Through Connections

### Description

`gzcon` provides a modified connection that wraps an existing connection, and decompresses reads or compresses writes through that connection. Standard `gzip` headers are assumed.

### Usage

    gzcon(con, level = 6, allowNonCompressed = TRUE)

### Arguments

`con` | a connection.
`level` | integer between 0 and 9, the compression level when writing.
`allowNonCompressed` | logical. When reading, should non-compressed input be allowed?

### Details

If `con` is open then the modified connection is opened. Closing the wrapper connection will also close the underlying connection.

Reading from a connection which does not supply a `gzip` magic header is equivalent to reading from the original connection if `allowNonCompressed` is true, otherwise an error.

The original connection becomes unusable: any object pointing to it will now refer to the modified connection.

When the connection is opened for reading, the input is expected to start with the `gzip` magic header. If it does not and if `allowNonCompressed = TRUE` (the default) the input is read as-is.

### Value

An object inheriting from class `"connection"`. This is the same connection number as supplied, but with a modified internal structure. It has binary mode.

### See Also

`gzfile`

### Examples

    ## Uncompress a data file from a URL
    z <- gzcon(url("http://www.stats.ox.ac.uk/pub/datasets/csb/ch12.dat.gz"))
    # read.table can only read from a text-mode connection.
    raw <- textConnection(readLines(z))
    close(z)
    dat <- read.table(raw)
    close(raw)
    dat[1:4, ]

    ## gzfile and gzcon can inter-work.
    ## Of course here one would used gzfile, but file() can be replaced by
    ## any other connection generator.
    zz <- gzfile("ex.gz", "w")
    cat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")
    close(zz)
    readLines(zz <- gzcon(file("ex.gz", "rb")))
    close(zz)
    unlink("ex.gz")

    zz <- gzcon(file("ex2.gz", "wb"))
    cat("TITLE extra line", "2 3 5 7", "", "11 13 17", file = zz, sep = "\n")
    close(zz)
    readLines(zz <- gzfile("ex2.gz"))
    close(zz)
    unlink("ex2.gz")

[Package base version 2.8.1 Index]