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

1 Answer

0 votes
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

public class RandomFiles {

    // Generate a random string of given length
    static String generateRandomString(int length) {
        String charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuilder sb = new StringBuilder(length);
        ThreadLocalRandom rng = ThreadLocalRandom.current();

        for (int i = 0; i < length; i++) {
            sb.append(charset.charAt(rng.nextInt(charset.length())));
        }

        return sb.toString();
    }

    // Generate a random date
    static String generateRandomDate() {
        ThreadLocalRandom rng = ThreadLocalRandom.current();

        int year  = rng.nextInt(2000, 2021); // Random year between 2000 and 2020
        int month = rng.nextInt(1, 13);      // Random month between 1 and 12
        int day   = rng.nextInt(1, 29);      // Random day between 1 and 28

        return String.format("%04d-%02d-%02d", year, month, day);
    }

    // Generate a random file size
    static int generateRandomFileSize() {
        return ThreadLocalRandom.current().nextInt(1, 100001); // 1–100000 bytes
    }

    public static void main(String[] args) {

        List<String> extensions = List.of(".txt", ".jpg", ".png", ".cpp", ".pdf");

        int numberOfFiles = 10;
        int fileLength = 9;

        for (int i = 0; i < numberOfFiles; i++) {
            String fileName = generateRandomString(fileLength);
            String extension = extensions.get(ThreadLocalRandom.current().nextInt(extensions.size()));
            String date = generateRandomDate();
            int fileSize = generateRandomFileSize();

            System.out.println(fileName + extension + " " + date + " " + fileSize + " bytes");
        }
    }
}



/*
run:

VYVjgab1p.cpp 2001-08-21 21278 bytes
qM694nEJk.jpg 2015-05-19 1882 bytes
assCZSzeB.jpg 2009-05-24 19520 bytes
rPU1dIdDV.txt 2011-08-27 71847 bytes
VMLwC4X3s.jpg 2010-08-04 13391 bytes
fEddG6O7Z.cpp 2007-06-18 72556 bytes
jDKBCUsiI.cpp 2019-06-02 4995 bytes
6SwFYqHJd.txt 2012-01-18 68285 bytes
B5gFKGZGA.jpg 2001-06-13 51497 bytes
aeYkX5EPU.pdf 2009-04-16 21547 bytes

*/

 



answered 20 hours ago by avibootz

Related questions

...