Генерация случайных файловых путей Java - PullRequest
1 голос
/ 11 сентября 2011

Есть ли какой-нибудь способ случайной генерации произвольного пути к файлу в Java?

Я думал о том, что, возможно, я мог бы выбрать один из предварительно выбранного массива, но это не было бы очень случайным. Или я мог бы начать с C: \, выбрать случайное число от 0 до количества папок; если это 0, я выбираю C: \, иначе я выбираю папку, соответствующую случайному числу. Промыть и повторять, пока не достигнет 0.

Я не думаю, что это лучшие решения, поэтому любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 11 сентября 2011

Вот пример для начала:

import java.io.File;
import java.util.*;

class Test {

    private static Random r = new Random();

    public static File getRandomFileIn(File f) {

        File[] subs = f.listFiles();

        if (f.isFile() || f.list().length == 0)
            return f;

        List<File> subDirs = new ArrayList<File>(Arrays.asList(subs));

        Iterator<File> files = subDirs.iterator();
        while (files.hasNext())
            if (!files.next().isDirectory())
                files.remove();

        while (!subDirs.isEmpty()) {
            File rndSubDir = subDirs.get(r.nextInt(subDirs.size()));
            File rndSubFile = getRandomFileIn(rndSubDir);
            if (rndSubFile != null)
                return rndSubFile;
            subDirs.remove(rndSubDir);
        }

        return null;
    }

    public static void main(String[] args) {

        File[] roots = File.listRoots();
        File rndFile = getRandomFileIn(roots[r.nextInt(roots.length)]);

        System.out.println(rndFile);
    }
}

На самом деле было довольно забавно видеть некоторые случайные файлы ... Я не знал о примерно 90% из них: -)

0 голосов
/ 11 сентября 2011

Упоминая 'best' , вы могли иметь в виду, что вы хотите, чтобы выбор папки каким-то образом был справедливым , например, возможно, исходя из количества или размера файлов внутри нее.Вы можете сделать это, только если вы знаете полные детали, чтобы начать с.В противном случае я бы пошел с вашим рекурсивным выбором на каждом уровне предложения.

0 голосов
/ 11 сентября 2011

Создайте MD5 Hash и используйте его в качестве каталога

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...