Source file src/io/fs/stat.go

     1  // Copyright 2020 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package fs
     6  
     7  // A StatFS is a file system with a Stat method.
     8  type StatFS interface {
     9  	FS
    10  
    11  	// Stat returns a FileInfo describing the file.
    12  	// If there is an error, it should be of type *PathError.
    13  	Stat(name string) (FileInfo, error)
    14  }
    15  
    16  // Stat returns a [FileInfo] describing the named file from the file system.
    17  //
    18  // If fs implements [StatFS], Stat calls fs.Stat.
    19  // Otherwise, Stat opens the [File] to stat it.
    20  func Stat(fsys FS, name string) (FileInfo, error) {
    21  	if fsys, ok := fsys.(StatFS); ok {
    22  		return fsys.Stat(name)
    23  	}
    24  
    25  	file, err := fsys.Open(name)
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	defer file.Close()
    30  	return file.Stat()
    31  }
    32  

View as plain text