// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Package ioutil implements some I/O utility functions. // // Deprecated: As of Go 1.16, the same functionality is now provided // by package [io] or package [os], and those implementations // should be preferred in new code. // See the specific function documentation for details.
package ioutil import ( ) // 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. // // Deprecated: As of Go 1.16, this function simply calls [io.ReadAll]. func ( io.Reader) ([]byte, error) { return io.ReadAll() } // ReadFile reads the file named by filename 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. // // Deprecated: As of Go 1.16, this function simply calls [os.ReadFile]. func ( string) ([]byte, error) { return os.ReadFile() } // WriteFile writes data to a file named by filename. // If the file does not exist, WriteFile creates it with permissions perm // (before umask); otherwise WriteFile truncates it before writing, without changing permissions. // // Deprecated: As of Go 1.16, this function simply calls [os.WriteFile]. func ( string, []byte, fs.FileMode) error { return os.WriteFile(, , ) } // ReadDir reads the directory named by dirname and returns // a list of fs.FileInfo for the directory's contents, // sorted by filename. If an error occurs reading the directory, // ReadDir returns no directory entries along with the error. // // Deprecated: As of Go 1.16, [os.ReadDir] is a more efficient and correct choice: // it returns a list of [fs.DirEntry] instead of [fs.FileInfo], // and it returns partial results in the case of an error // midway through reading a directory. // // If you must continue obtaining a list of [fs.FileInfo], you still can: // // entries, err := os.ReadDir(dirname) // if err != nil { ... } // infos := make([]fs.FileInfo, 0, len(entries)) // for _, entry := range entries { // info, err := entry.Info() // if err != nil { ... } // infos = append(infos, info) // } func ( string) ([]fs.FileInfo, error) { , := os.Open() if != nil { return nil, } , := .Readdir(-1) .Close() if != nil { return nil, } sort.Slice(, func(, int) bool { return [].Name() < [].Name() }) return , nil } // NopCloser returns a ReadCloser with a no-op Close method wrapping // the provided Reader r. // // Deprecated: As of Go 1.16, this function simply calls [io.NopCloser]. func ( io.Reader) io.ReadCloser { return io.NopCloser() } // Discard is an io.Writer on which all Write calls succeed // without doing anything. // // Deprecated: As of Go 1.16, this value is simply [io.Discard]. var Discard io.Writer = io.Discard