Search code examples
filegofsyncsparse-file

How to create a 10MB file filled with "000000..." data in golang?


I am intended to use fdatasync in a system like log or diskqueue. The first thing is to create a 10MB file with "000000..." in file system like ext4. But I don't know how to do it properly.


Solution

  • jnml@fsc-r630:~/src/tmp/SO/16797380$ ls -l
    celkem 4
    -rw-rw-r-- 1 jnml jnml 186 kvě 29 07:54 main.go
    jnml@fsc-r630:~/src/tmp/SO/16797380$ cat main.go 
    package main
    
    import (
            "log"
            "os"
    )
    
    func main() {
            f, err := os.Create("foo.bar")
            if err != nil {
                    log.Fatal(err)
            }
    
            if err := f.Truncate(1e7); err != nil {
                    log.Fatal(err)
            }
    }
    jnml@fsc-r630:~/src/tmp/SO/16797380$ go run main.go 
    jnml@fsc-r630:~/src/tmp/SO/16797380$ ls -l
    celkem 4
    -rw-rw-r-- 1 jnml jnml 10000000 kvě 29 07:55 foo.bar
    -rw-rw-r-- 1 jnml jnml      186 kvě 29 07:54 main.go
    jnml@fsc-r630:~/src/tmp/SO/16797380$