github.com/0chain/gosdk@v1.17.11/core/sys/fs_disk.go (about) 1 package sys 2 3 import ( 4 "io/fs" 5 "os" 6 "path/filepath" 7 ) 8 9 // DiskFS implement file system on disk 10 type DiskFS struct { 11 } 12 13 // NewDiskFS create DiskFS instance 14 func NewDiskFS() FS { 15 return &DiskFS{} 16 } 17 18 // Open opens the named file for reading. If successful, methods on 19 // the returned file can be used for reading; the associated file 20 // descriptor has mode O_RDONLY. 21 // If there is an error, it will be of type *PathError. 22 func (dfs *DiskFS) Open(name string) (File, error) { 23 return dfs.OpenFile(name, os.O_RDONLY, 0) 24 } 25 26 func (dfs *DiskFS) OpenFile(name string, flag int, perm os.FileMode) (File, error) { 27 dir := filepath.Dir(name) 28 if _, err := os.Stat(dir); os.IsNotExist(err) { 29 if err := os.MkdirAll(dir, 0744); err != nil { 30 return nil, err 31 } 32 } 33 return os.OpenFile(name, flag, perm) 34 } 35 36 // ReadFile reads the file named by filename and returns the contents. 37 func (dfs *DiskFS) ReadFile(name string) ([]byte, error) { 38 return os.ReadFile(name) 39 } 40 41 // WriteFile writes data to a file named by filename. 42 func (dfs *DiskFS) WriteFile(name string, data []byte, perm os.FileMode) error { 43 return os.WriteFile(name, data, perm) 44 } 45 46 // Remove removes the named file or (empty) directory. 47 // If there is an error, it will be of type *PathError. 48 func (dfs *DiskFS) Remove(name string) error { 49 return os.Remove(name) 50 } 51 52 // MkdirAll creates a directory named path 53 func (dfs *DiskFS) MkdirAll(path string, perm os.FileMode) error { 54 return os.MkdirAll(path, perm) 55 } 56 57 // Stat returns a FileInfo describing the named file. 58 // If there is an error, it will be of type *PathError. 59 func (dfs *DiskFS) Stat(name string) (fs.FileInfo, error) { 60 return os.Stat(name) 61 } 62 63 func (dfs *DiskFS) LoadProgress(progressID string) ([]byte, error) { 64 return dfs.ReadFile(progressID) 65 } 66 67 func (dfs *DiskFS) SaveProgress(progressID string, data []byte, perm fs.FileMode) error { 68 return dfs.WriteFile(progressID, data, perm) 69 } 70 71 func (dfs *DiskFS) RemoveProgress(progressID string) error { 72 return dfs.Remove(progressID) 73 } 74 75 func (dfs *DiskFS) CreateDirectory(_ string) error { 76 return nil 77 } 78 79 func (dfs *DiskFS) GetFileHandler(_, name string) (File, error) { 80 dir := filepath.Dir(name) 81 if _, err := os.Stat(dir); os.IsNotExist(err) { 82 if err := os.MkdirAll(dir, 0744); err != nil { 83 return nil, err 84 } 85 } 86 return os.OpenFile(name, os.O_CREATE|os.O_WRONLY, 0644) 87 } 88 89 func (dfs *DiskFS) RemoveAllDirectories() { 90 }