xopen

package module
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2023 License: MIT Imports: 16 Imported by: 18

README

GoDoc Build Status Coverage Status

xopen

import "github.com/shenwei356/xopen"

xopen makes it easy to get buffered (possibly gzip-, xz-, or zstd- compressed) readers and writers. and close all of the associated files. Ropen opens a file for reading. Wopen opens a file for writing.

This packages is forked from https://github.com/brentp/xopen , but I have modified too much :(

Usage

Here's how to get a buffered reader:

// gzipped
rdr, err := xopen.Ropen("some.gz")
// xz compressed
rdr, err := xopen.Ropen("some.xz")
// zstd compressed
rdr, err := xopen.Ropen("some.zst")
// normal
rdr, err := xopen.Ropen("some.txt")
// stdin (possibly gzip-, xz-, or zstd-compressed)
rdr, err := xopen.Ropen("-")
// https://
rdr, err := xopen.Ropen("http://example.com/some-file.txt")
// Cmd
rdr, err := xopen.Ropen("| ls -lh somefile.gz")
// User directory:
rdr, err := xopen.Ropen("~/shenwei356/somefile")

checkError(err)
defer checkError(rdr.Close())

Writter

wtr, err := xopen.Wopen("some.gz")
defer checkError(wtr.Close())

outfh.Flush()

Documentation

Overview

Package xopen makes it easy to get buffered readers and writers. Ropen opens a (possibly gzipped) file/process/http site for buffered reading. Wopen opens a (possibly gzipped) file for buffered writing. Both will use gzip when appropriate and will user buffered IO.

Index

Constants

This section is empty.

Variables

View Source
var ErrDirNotSupported = errors.New("xopen: input is a directory")

ErrDirNotSupported means the path is a directory.

View Source
var ErrNoContent = errors.New("xopen: no content")

ErrNoContent means nothing in the stream/file.

Level is the default compression level of gzip. This value will be automatically adjusted to the default value of zstd or bzip2.

Functions

func CheckBytes

func CheckBytes(b *bufio.Reader, buf []byte) (bool, error)

CheckBytes peeks at a buffered stream and checks if the first read bytes match.

func Exists

func Exists(path string) bool

Exists checks if a local file exits

func ExpandUser

func ExpandUser(path string) (string, error)

ExpandUser expands ~/path and ~otheruser/path appropriately

func IsBzip2 added in v0.3.0

func IsBzip2(b *bufio.Reader) (bool, error)

IsBzip2 returns true buffered Reader has the bzip2 magic.

func IsGzip

func IsGzip(b *bufio.Reader) (bool, error)

IsGzip returns true buffered Reader has the gzip magic.

func IsStdin

func IsStdin() bool

IsStdin checks if we are getting data from stdin.

func IsXz added in v0.2.0

func IsXz(b *bufio.Reader) (bool, error)

IsXz returns true buffered Reader has the xz magic.

func IsZst added in v0.2.0

func IsZst(b *bufio.Reader) (bool, error)

IsZst returns true buffered Reader has the zstd magic.

func XReader

func XReader(f string) (io.Reader, error)

XReader returns a reader from a url string or a file.

Types

type Reader

type Reader struct {
	*bufio.Reader
	// contains filtered or unexported fields
}

Reader is returned by Ropen

func Buf

func Buf(r io.Reader) (*Reader, error)

Buf returns a buffered reader from an io.Reader If f == "-", then it will attempt to read from os.Stdin. If the file is gzipped, it will be read as such.

func Ropen

func Ropen(f string) (*Reader, error)

Ropen opens a buffered reader.

func (*Reader) Close

func (r *Reader) Close() error

Close the associated files.

type Writer

type Writer struct {
	*bufio.Writer
	// contains filtered or unexported fields
}

Writer is returned by Wopen

func Wopen

func Wopen(f string) (*Writer, error)

Wopen opens a buffered reader. If f == "-", then stdout will be used. If f endswith ".gz", then the output will be gzipped. If f endswith ".xz", then the output will be zx-compressed. If f endswith ".zst", then the output will be zstd-compressed. If f endswith ".bz2", then the output will be bzip2-compressed.

func WopenFile

func WopenFile(f string, flag int, perm os.FileMode) (*Writer, error)

WopenFile opens a buffered reader. If f == "-", then stdout will be used. If f endswith ".gz", then the output will be gzipped. If f endswith ".xz", then the output will be zx-compressed. If f endswith ".bz2", then the output will be bzip2-compressed.

func (*Writer) Close

func (w *Writer) Close() error

Close the associated files.

func (*Writer) Flush

func (w *Writer) Flush() error

Flush the writer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL