有没有办法在Java中随机生成任意文件路径?
我一直在想的是,也许我可以选择一个预先选定的阵列中的一个,但这不会是非常随机的。或者我可以从C:\开始,从0到文件夹的数量选择一个随机数;如果它是0,我选择C:\,否则我选择与随机数对应的文件夹。冲洗并重复直至达到0。
我觉得这些是最佳解决方案,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
这是一个让你入门的例子:
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%的文件: - )
答案 1 :(得分:0)
创建MD5 Hash并将其用作目录
答案 2 :(得分:0)
通过提及'best',您可能意味着您希望文件夹选择以某种方式 fair ,例如可能基于内部文件的数量或大小它。如果您知道完整的详细信息,则只能这样做。否则,我会在每个级别的建议中使用递归选择。