Copyright 2016 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 os

import (
	
	
)

type readdirMode int

const (
	readdirName readdirMode = iota
	readdirDirEntry
	readdirFileInfo
)
Readdir reads the contents of the directory associated with file and returns a slice of up to n FileInfo values, as would be returned by Lstat, in directory order. Subsequent calls on the same file will yield further FileInfos. If n > 0, Readdir returns at most n FileInfo structures. In this case, if Readdir returns an empty slice, it will return a non-nil error explaining why. At the end of a directory, the error is io.EOF. If n <= 0, Readdir returns all the FileInfo from the directory in a single slice. In this case, if Readdir succeeds (reads all the way to the end of the directory), it returns the slice and a nil error. If it encounters an error before the end of the directory, Readdir returns the FileInfo read until that point and a non-nil error. Most clients are better served by the more efficient ReadDir method.
func ( *File) ( int) ([]FileInfo, error) {
	if  == nil {
		return nil, ErrInvalid
	}
	, , ,  := .readdir(, readdirFileInfo)
Readdir has historically always returned a non-nil empty slice, never nil, even on error (except misuse with nil receiver above). Keep it that way to avoid breaking overly sensitive callers.
		 = []FileInfo{}
	}
	return , 
}
Readdirnames reads the contents of the directory associated with file and returns a slice of up to n names of files in the directory, in directory order. Subsequent calls on the same file will yield further names. If n > 0, Readdirnames returns at most n names. In this case, if Readdirnames returns an empty slice, it will return a non-nil error explaining why. At the end of a directory, the error is io.EOF. If n <= 0, Readdirnames returns all the names from the directory in a single slice. In this case, if Readdirnames succeeds (reads all the way to the end of the directory), it returns the slice and a nil error. If it encounters an error before the end of the directory, Readdirnames returns the names read until that point and a non-nil error.
func ( *File) ( int) ( []string,  error) {
	if  == nil {
		return nil, ErrInvalid
	}
	, _, _,  = .readdir(, readdirName)
Readdirnames has historically always returned a non-nil empty slice, never nil, even on error (except misuse with nil receiver above). Keep it that way to avoid breaking overly sensitive callers.
		 = []string{}
	}
	return , 
}
A DirEntry is an entry read from a directory (using the ReadDir function or a File's ReadDir method).
ReadDir reads the contents of the directory associated with the file f and returns a slice of DirEntry values in directory order. Subsequent calls on the same file will yield later DirEntry records in the directory. If n > 0, ReadDir returns at most n DirEntry records. In this case, if ReadDir returns an empty slice, it will return an error explaining why. At the end of a directory, the error is io.EOF. If n <= 0, ReadDir returns all the DirEntry records remaining in the directory. When it succeeds, it returns a nil error (not io.EOF).
func ( *File) ( int) ([]DirEntry, error) {
	if  == nil {
		return nil, ErrInvalid
	}
	, , ,  := .readdir(, readdirDirEntry)
Match Readdir and Readdirnames: don't return nil slices.
		 = []DirEntry{}
	}
	return , 
}
testingForceReadDirLstat forces ReadDir to call Lstat, for testing that code path. This can be difficult to provoke on some Unix systems otherwise.
ReadDir reads the named directory, returning all its directory entries sorted by filename. If an error occurs reading the directory, ReadDir returns the entries it was able to read before the error, along with the error.
func ( string) ([]DirEntry, error) {
	,  := Open()
	if  != nil {
		return nil, 
	}
	defer .Close()

	,  := .ReadDir(-1)
	sort.Slice(, func(,  int) bool { return [].Name() < [].Name() })
	return ,