ioutil

package module
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Dec 12, 2025 License: BSD-3-Clause Imports: 9 Imported by: 0

README

ioutil - AbsFs FileSystem Utility Functions

Go Reference Go Report Card CI License

Package github.com/absfs/ioutil implements the standard library ioutil functions for the absfs.FileSystem interface, providing a familiar API for working with abstract filesystems.

Features

  • 🔄 Drop-in replacement for io/ioutil functions adapted for abstract filesystems
  • 🧪 Fully tested across Linux, macOS, and Windows
  • 📦 Zero dependencies beyond the absfs ecosystem
  • ⚡ Efficient implementations derived from Go's standard library

Installation

go get github.com/absfs/ioutil

Usage

Import the package:

import (
    "github.com/absfs/ioutil"
    "github.com/absfs/osfs"
)

Examples

Read Directory
fs, _ := osfs.NewFS()

files, err := ioutil.ReadDir(fs, ".")
if err != nil {
    log.Fatal(err)
}

for _, file := range files {
    fmt.Println(file.Name())
}
Read File
fs, _ := osfs.NewFS()

content, err := ioutil.ReadFile(fs, "testdata/hello")
if err != nil {
    log.Fatal(err)
}

fmt.Printf("File contents: %s", content)
Write File
fs, _ := osfs.NewFS()

data := []byte("Hello, World!")
err := ioutil.WriteFile(fs, "output.txt", data, 0644)
if err != nil {
    log.Fatal(err)
}
Temporary Directory
fs, _ := osfs.NewFS()
content := []byte("temporary file's content")

dir, err := ioutil.TempDir(fs, "", "example")
if err != nil {
    log.Fatal(err)
}
defer fs.RemoveAll(dir) // clean up

tmpfn := filepath.Join(dir, "tmpfile")
if err := ioutil.WriteFile(fs, tmpfn, content, 0666); err != nil {
    log.Fatal(err)
}
Temporary File
fs, _ := osfs.NewFS()
content := []byte("temporary file's content")

tmpfile, err := ioutil.TempFile(fs, "", "example")
if err != nil {
    log.Fatal(err)
}
defer fs.Remove(tmpfile.Name()) // clean up

if _, err := tmpfile.Write(content); err != nil {
    log.Fatal(err)
}
if err := tmpfile.Close(); err != nil {
    log.Fatal(err)
}

API Reference

The package provides the following functions:

  • ReadAll(r io.Reader) ([]byte, error) - Read all data from a reader
  • ReadFile(fs absfs.FileSystem, filename string) ([]byte, error) - Read entire file
  • WriteFile(fs absfs.FileSystem, filename string, data []byte, perm os.FileMode) error - Write data to file
  • ReadDir(fs absfs.FileSystem, dirname string) ([]os.FileInfo, error) - Read directory entries
  • TempFile(fs absfs.FileSystem, dir, prefix string) (absfs.File, error) - Create temporary file
  • TempDir(fs absfs.FileSystem, dir, prefix string) (string, error) - Create temporary directory
  • NopCloser(r io.Reader) io.ReadCloser - Wrap reader with no-op closer
  • Discard - io.Writer that discards all data

See the full documentation for detailed usage.

absfs Ecosystem

This package is part of the absfs ecosystem:

  • absfs - Abstract filesystem interface with composition features
  • osfs - OS filesystem implementation
  • memfs - In-memory filesystem implementation

Check out the absfs repo for more information about the abstract filesystem interface and features like filesystem composition.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for details.

License

Because this project is derived from the Go standard library, it is governed by the Go license, which is a BSD-style License. See LICENSE for the full license text.

Copyright (c) 2009 The Go Authors. All rights reserved.

Documentation

Overview

Package github.com/absfs/ioutil implements the standard library ioutil functions for the absfs.FileSystem interface.

Index

Examples

Constants

This section is empty.

Variables

View Source
var Discard io.Writer = devNull(0)

Discard is an io.Writer on which all Write calls succeed without doing anything.

Functions

func NopCloser

func NopCloser(r io.Reader) io.ReadCloser

NopCloser returns a ReadCloser with a no-op Close method wrapping the provided Reader r.

func ReadAll

func ReadAll(r io.Reader) ([]byte, error)

ReadAll reads from r until an error or EOF and returns the data it read. A successful call returns err == nil, not err == EOF. Because ReadAll is defined to read from src until EOF, it does not treat an EOF from Read as an error to be reported.

Example
package main

import (
	"fmt"
	"log"
	"strings"

	"github.com/absfs/ioutil"
)

func main() {
	r := strings.NewReader("Go is a general-purpose language designed with systems programming in mind.")

	b, err := ioutil.ReadAll(r)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("%s", b)

}
Output:
Go is a general-purpose language designed with systems programming in mind.

func ReadDir

func ReadDir(fs absfs.FileSystem, dirname string) ([]os.FileInfo, error)

ReadDir reads the directory named by dirname from the absfs.FileSystem fs and returns a list of directory entries sorted by filename.

Example
package main

import (
	"fmt"
	"log"

	"github.com/absfs/ioutil"
	"github.com/absfs/osfs"
)

func main() {
	fs, _ := osfs.NewFS()

	files, err := ioutil.ReadDir(fs, ".")
	if err != nil {
		log.Fatal(err)
	}

	for _, file := range files {
		fmt.Println(file.Name())
	}
}

func ReadFile

func ReadFile(fs absfs.FileSystem, filename string) ([]byte, error)

ReadFile reads the file named by filename from the absfs.FileSystem fs and returns the contents. A successful call returns err == nil, not err == EOF. Because ReadFile reads the whole file, it does not treat an EOF from Read as an error to be reported.

Example
package main

import (
	"fmt"
	"log"

	"github.com/absfs/ioutil"
	"github.com/absfs/osfs"
)

func main() {
	fs, _ := osfs.NewFS()

	content, err := ioutil.ReadFile(fs, "testdata/hello")
	if err != nil {
		log.Fatal(err)
	}

	fmt.Printf("File contents: %s", content)

}
Output:
File contents: Hello, Gophers!

func TempDir

func TempDir(fs absfs.FileSystem, dir, prefix string) (name string, err error)

TempDir creates a new temporary directory in the directory dir of the absfs.FileSystem fs with a name beginning with prefix and returns the path of the new directory. If dir is the empty string, TempDir uses the default directory for temporary files (see os.TempDir). Multiple programs calling TempDir simultaneously will not choose the same directory. It is the caller's responsibility to remove the directory when no longer needed.

Example
package main

import (
	"log"
	"path/filepath"

	"github.com/absfs/ioutil"
	"github.com/absfs/osfs"
)

func main() {
	fs, _ := osfs.NewFS()
	content := []byte("temporary file's content")
	dir, err := ioutil.TempDir(fs, "", "example")
	if err != nil {
		log.Fatal(err)
	}

	defer fs.RemoveAll(dir) // clean up

	tmpfn := filepath.Join(dir, "tmpfile")
	if err := ioutil.WriteFile(fs, tmpfn, content, 0666); err != nil {
		log.Fatal(err)
	}
}

func TempFile

func TempFile(fs absfs.FileSystem, dir, prefix string) (f absfs.File, err error)

TempFile creates a new temporary file in the directory dir of the absfs.FileSystem fs with a name beginning with prefix, opens the file for reading and writing, and returns the resulting absfs.File. If dir is the empty string, TempFile uses the default directory for temporary files for the given FileSystem (see absfs.TempDir). Multiple programs calling TempFile simultaneously will not choose the same file. The caller can use f.Name() to find the pathname of the file. It is the caller's responsibility to remove the file when no longer needed.

Example
package main

import (
	"log"

	"github.com/absfs/ioutil"
	"github.com/absfs/osfs"
)

func main() {
	fs, _ := osfs.NewFS()
	content := []byte("temporary file's content")
	tmpfile, err := ioutil.TempFile(fs, "", "example")
	if err != nil {
		log.Fatal(err)
	}

	defer fs.Remove(tmpfile.Name()) // clean up

	if _, err := tmpfile.Write(content); err != nil {
		log.Fatal(err)
	}
	if err := tmpfile.Close(); err != nil {
		log.Fatal(err)
	}
}

func WriteFile

func WriteFile(fs absfs.FileSystem, filename string, data []byte, perm os.FileMode) error

WriteFile writes data to a file named by filename in the absfs.FileSystem fs. If the file does not exist, WriteFile creates it with permissions perm; otherwise WriteFile truncates it before writing.

Types

This section is empty.

Jump to

Keyboard shortcuts

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