Created
July 25, 2018 06:49
-
-
Save ando19721226/1ea52a1d674b7369da3b182ef8702e0e to your computer and use it in GitHub Desktop.
任意のサイズのファイルを作る
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"crypto/rand" | |
"flag" | |
"fmt" | |
"io" | |
"os" | |
"strconv" | |
) | |
var ( | |
kilo = flag.Bool("k", false, "単位をキロバイトで指定します。") | |
mega = flag.Bool("m", false, "単位をメガバイトで指定します。") | |
giga = flag.Bool("g", false, "単位をギガバイトで指定します。") | |
out = flag.String("o", "dummy", "出力先のファイル名です。") | |
) | |
func main() { | |
// -h オプション用文言 | |
flag.Usage = func() { | |
fmt.Fprintln(os.Stderr, "\n指定サイズのファイルを生成します。") | |
fmt.Fprintln(os.Stderr, "ファイルの中身はランダムなバイトで埋めます。\n") | |
fmt.Fprintf(os.Stderr, "使い方\n") | |
fmt.Fprintf(os.Stderr, " %s [オプション] ファイルサイズ\n", os.Args[0]) | |
fmt.Fprintf(os.Stderr, "オプション:\n") | |
flag.PrintDefaults() | |
fmt.Fprintf(os.Stderr, "例:\n") | |
fmt.Fprintf(os.Stderr, " 以下は、10KBのresult.datを生成します。\n") | |
fmt.Fprintf(os.Stderr, " %s -o result.dat -k 10\n", os.Args[0]) | |
os.Exit(0) | |
} | |
flag.Parse() | |
size, err := strconv.ParseInt(flag.Arg(0), 10, 64) | |
if err != nil { | |
flag.Usage() | |
os.Exit(1) | |
} | |
f, err := os.Create(*out) | |
if err != nil { | |
panic(err) | |
} | |
defer f.Close() | |
s := size | |
if *kilo { | |
s = s * 1024 | |
} else if *mega { | |
s = s * 1024 * 1024 | |
} else if *giga { | |
s = s * 1024 * 1024 * 1024 | |
} | |
io.CopyN(f, rand.Reader, s) | |
fmt.Printf("ファイル名が'%s'のファイルを出力しました。\n", *out) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment