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 }