github.com/pbberlin/tools@v0.0.0-20160910141205-7aa5421c2169/os/fsi/dsfs/42_dir_impl.go (about)

     1  package dsfs
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  )
     7  
     8  // These methods on AeDir are mostly useless,
     9  // except for Readdir(), Readdirnames() and Stat().
    10  // But we have to implement them in order to
    11  // convert AeDir into fsi.File.
    12  //
    13  
    14  func (f *DsDir) Close() error {
    15  	return nil
    16  }
    17  
    18  func (f *DsDir) Read(b []byte) (n int, err error) {
    19  	return
    20  }
    21  func (f *DsDir) ReadAt(b []byte, off int64) (n int, err error) {
    22  	return f.Read(b)
    23  }
    24  
    25  // Adapt (f *AeFile) Readdir also
    26  func (f *DsDir) Readdir(n int) (fis []os.FileInfo, err error) {
    27  
    28  	wantAll := n <= 0
    29  	fis, err = f.fSys.ReadDir(f.Dir + f.BName)
    30  	if wantAll {
    31  		return fis, nil
    32  	}
    33  
    34  	if f.memDirFetchPos == 0 {
    35  		f.memDirFetchPos = len(fis)
    36  		return fis, nil
    37  	} else {
    38  		f.memDirFetchPos = 0
    39  		return []os.FileInfo{}, io.EOF
    40  	}
    41  }
    42  
    43  func (f *DsDir) Readdirnames(n int) (names []string, err error) {
    44  	fis, err := f.Readdir(n)
    45  	names = make([]string, 0, len(fis))
    46  	for _, lp := range fis {
    47  		names = append(names, lp.Name())
    48  	}
    49  	return names, err
    50  }
    51  
    52  func (f *DsDir) Seek(offset int64, whence int) (int64, error) {
    53  	return int64(0), nil
    54  }
    55  
    56  func (f *DsDir) Stat() (os.FileInfo, error) {
    57  	return os.FileInfo(*f), nil
    58  }
    59  
    60  func (f *DsDir) Truncate(size int64) error {
    61  	return nil
    62  }
    63  
    64  func (f *DsDir) Write(b []byte) (n int, err error) {
    65  	return
    66  }
    67  
    68  func (f *DsDir) WriteAt(b []byte, off int64) (n int, err error) {
    69  	return f.Write(b)
    70  }
    71  
    72  func (f *DsDir) WriteString(s string) (ret int, err error) {
    73  	return f.Write([]byte(s))
    74  }