Create an fs.FS instance that “mounts” other fs.FS.
As of this writing this module is really aimed at one-off tools and testing, and thus does not really prioritize on efficiency
Note: extremely alpha quality.
fs1 := .... fs2 := .... var fs multifs.FS fs.Mount("/fs1", fs1) fs.Mount("/fs2", fs2) f1, err := fs.Open("/fs1/foo/bar/baz.txt") f2, err := fs.Open("/fs2/quux/corge/grault.txt")
Given a prefix of “/prefix”, call to
(multifs.FS).Open("/prefix/file.txt") results in the
backend filesystem receiving “file.txt” as the argument to its
This means that you should most likely not just use
os.Open in the backend.
Instead you should most likely use
os.DirFS which takes care of the prefix.
Let’s say you have a file name
"/root/temp/12345/file.txt". and you want this to be availble
"/prefix/file.txt". Then you should do the follwing:
fileFS, _ := os.DirFS("/root/temp/12345") var fs multifs.FS fs.Mount("/prefix", fileFS)
The use of
os.DirFS makes sure that it takes care of replacing the prefix
with the actual file system prefix for you.