How to create a list of random file names, including extension, dates, and file size in Go

1 Answer

0 votes
package main

import (
    "crypto/rand"
    "fmt"
    "math/big"
    "strings"
)

// Generate a random integer in [0, max)
func randomInt(max int64) int64 {
    n, _ := rand.Int(rand.Reader, big.NewInt(max))
    return n.Int64()
}

// Generate a random string of given length
func generateRandomString(length int) string {
    const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    var sb strings.Builder
    sb.Grow(length)

    for i := 0; i < length; i++ {
        idx := randomInt(int64(len(charset)))
        sb.WriteByte(charset[idx])
    }

    return sb.String()
}

// Generate a random date
func generateRandomDate() string {
    year := 2000 + randomInt(21) // 2000–2020
    month := 1 + randomInt(12)  // 1–12
    day := 1 + randomInt(28)    // 1–28

    return fmt.Sprintf("%04d-%02d-%02d", year, month, day)
}

// Generate a random file size
func generateRandomFileSize() int64 {
    return 1 + randomInt(100000) // 1–100000 bytes
}

func main() {
    extensions := []string{".txt", ".jpg", ".png", ".cpp", ".pdf"}
    numberOfFiles := 10
    fileLength := 9

    for i := 0; i < numberOfFiles; i++ {
        fileName := generateRandomString(fileLength)
        extension := extensions[randomInt(int64(len(extensions)))]
        date := generateRandomDate()
        fileSize := generateRandomFileSize()

        fmt.Printf("%s%s %s %d bytes\n", fileName, extension, date, fileSize)
    }
}


/*
run:

k4Sg2ica6.png 2010-10-10 71145 bytes
U8Hi7ICwj.png 2003-12-28 16447 bytes
vNfPYzuI9.txt 2007-04-28 77029 bytes
wkc6jy7h7.jpg 2013-08-18 44492 bytes
mI0rLiCSh.pdf 2006-12-18 88282 bytes
RI0ODHyrT.pdf 2017-03-03 21178 bytes
Oy4Gi8SkO.txt 2001-03-11 61983 bytes
9xEgcQiJM.png 2016-09-07 37712 bytes
3iAH8w9Mb.txt 2001-12-04 46002 bytes
pO8VCSG5I.jpg 2012-05-28 28702 bytes

*/

 



answered 5 hours ago by avibootz

Related questions

...