Sparse files in Go
Large files that are created with the os.Seek()
function may have holes in them and occupy fewer disk blocks than files with the same size, but without holes in them; such files are called sparse files. This section will develop a program that creates sparse files.
The Go code of sparse.go
will be presented in three parts. The first part is the following:
package main import ( "fmt" "log" "os" "path/filepath" "strconv" )
The second part of sparse.go
has the following Go code:
func main() { if len(os.Args) != 3 { fmt.Printf("usage: %s SIZE filename\n", filepath.Base(os.Args[0])) os.Exit(1) } SIZE, _ := strconv.ParseInt(os.Args[1], 10, 64) filename := os.Args[2] _, err := os.Stat(filename) if err == nil { fmt.Printf("File %s already exists.\n", filename) os.Exit(1) }
The strconv.ParseInt()
function is used for converting the command-line argument that defines the size of the sparse...