A tiny go package which combines together fs.FS filesystems.
mergefs.FS
looks through a slice of fs.FS
filesytems in order to find a given file. It returns the first match, or os.ErrNotExist
.
mergefs could be used to overlay multiple fs.FS filesystems on top of each other.
- marshalfs for backing a fileystem with your objects.
- Standard Library:
- dirfs contains
os.DirFS
- this 'default' implementation is backed by an actual filesystem. - testfs contains a memory-map implementation and a testing tool. The standard library contains a few other fs.FS implementations (like 'zip')
- embedfs provides access to files embedded in the running Go program.
- dirfs contains
- An earlier work, afero is a filesystem abstraction for Go, which has been the standard for filesystem abstractions up until go1.15. It's read-write, and it's a mature project. The interfaces look very different (big with lots of methods), so it's not really compatible.
- s3fs is a fs.FS backed by the AWS S3 client
- hashfs appends SHA256 hashes to filenames to allow for aggressive HTTP caching.