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

1 Answer

0 votes
import scala.util.Random

object RandomFiles {

  // Generate a random string of given length
  def generateRandomString(length: Int): String = {
    val charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    val sb = new StringBuilder(length)
    for (_ <- 0 until length) {
      sb.append(charset(Random.nextInt(charset.length)))
    }
    sb.toString()
  }

  // Generate a random date
  def generateRandomDate(): String = {
    val year  = 2000 + Random.nextInt(21) // 2000–2020
    val month = 1 + Random.nextInt(12)    // 1–12
    val day   = 1 + Random.nextInt(28)    // 1–28

    f"$year%04d-$month%02d-$day%02d"
  }

  // Generate a random file size
  def generateRandomFileSize(): Int = {
    1 + Random.nextInt(100000) // 1–100000 bytes
  }

  def main(args: Array[String]): Unit = {
    val extensions = List(".txt", ".jpg", ".png", ".cpp", ".pdf")
    val numberOfFiles = 10
    val fileLength = 9

    for (_ <- 1 to numberOfFiles) {
      val fileName = generateRandomString(fileLength)
      val extension = extensions(Random.nextInt(extensions.length))
      val date = generateRandomDate()
      val fileSize = generateRandomFileSize()

      println(s"$fileName$extension $date $fileSize bytes")
    }
  }
}



/*
run:

Os65lCLUN.cpp 2007-05-04 45761 bytes
xT882Lsut.pdf 2012-08-20 37279 bytes
b4cjeuFSl.txt 2011-11-04 12896 bytes
8EtyDwLUm.pdf 2007-11-10 90561 bytes
3rNXG4plf.cpp 2008-06-15 46248 bytes
eAIeoPjHT.jpg 2006-11-28 61313 bytes
Ievr1ysKE.pdf 2006-06-18 90182 bytes
j6R5vv22d.png 2012-11-26 71070 bytes
rcyIH3v3w.pdf 2006-09-27 62660 bytes
wqk94MTwc.png 2013-07-12 83833 bytes

*/

 



answered 5 hours ago by avibootz

Related questions

...