Read a tar file contents using go1.16 io/fs abstraction
See the codeRead a tar file contents using go1.16 io/fs abstraction
⚠️ go-tarfs needs go>=1.21
Install:
go get github.com/nlepage/go-tarfs
Use:
package main
import (
"os"
tarfs "github.com/nlepage/go-tarfs"
)
func main() {
tf, err := os.Open("path/to/archive.tar")
if err != nil {
panic(err)
}
defer tf.Close()
tfs, err := tarfs.New(tf)
if err != nil {
panic(err)
}
f, err := tfs.Open("path/to/some/file")
if err != nil {
panic(err)
}
defer f.Close() // frees the associated reader
// use f...
}
More information at pkg.go.dev/github.com/nlepage/go-tarfs
fs.FSThe io.Reader given to tarfs.New must stay opened while using the returned fs.FS (this is true only if the io.Reader implements io.ReaderAt).
Since v1.2.0 files content are not stored in memory anymore if the io.Reader given to tarfs.New implements io.ReaderAt.
For now, no effort is done to support symbolic links.
Give a ⭐️ if this project helped you!
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
This project is unlicensed, it is free and unencumbered software released into the public domain.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
345 followers · starred Feb 2022
94 followers · starred Jun 2025
46 followers · starred Dec 2024
Read a tar file contents using go1.16 io/fs abstraction
See the codeRead a tar file contents using go1.16 io/fs abstraction
⚠️ go-tarfs needs go>=1.21
Install:
go get github.com/nlepage/go-tarfs
Use:
package main
import (
"os"
tarfs "github.com/nlepage/go-tarfs"
)
func main() {
tf, err := os.Open("path/to/archive.tar")
if err != nil {
panic(err)
}
defer tf.Close()
tfs, err := tarfs.New(tf)
if err != nil {
panic(err)
}
f, err := tfs.Open("path/to/some/file")
if err != nil {
panic(err)
}
defer f.Close() // frees the associated reader
// use f...
}
More information at pkg.go.dev/github.com/nlepage/go-tarfs
fs.FSThe io.Reader given to tarfs.New must stay opened while using the returned fs.FS (this is true only if the io.Reader implements io.ReaderAt).
Since v1.2.0 files content are not stored in memory anymore if the io.Reader given to tarfs.New implements io.ReaderAt.
For now, no effort is done to support symbolic links.
Give a ⭐️ if this project helped you!
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
This project is unlicensed, it is free and unencumbered software released into the public domain.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
345 followers · starred Feb 2022
94 followers · starred Jun 2025
46 followers · starred Dec 2024