2011-09-11 183 views
1

有什麼方法可以在Java中隨機生成任意文件路徑?生成隨機文件路徑Java

我一直在想的是,也許我可以從預先選擇的數組中選出一個,但那不會是非常隨機的。或者我可以從C:\開始,從0到文件夾數量中隨機選擇一個數字;如果它是0,我選擇C:\,否則我選擇與隨機數對應的文件夾。沖洗並重復,直到它擊中0.

我不覺得這些是最好解決方案,所以任何幫助,將不勝感激。

+2

你的意思是一個*存在*文件的隨機路徑? – aioobe

+1

這樣做的意義何在? –

+1

我能想到做這樣的事情的唯一原因是創建惡意軟件,這是什麼? – Ali

回答

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%的人:-)

+0

感謝您的提示!真的有幫助:) – phlip9

+0

你能解釋它是如何工作的 –

0

通過提「最好的」你可能會意味着你希望文件夾選擇要公平以某種方式,比如PE可能基於其中的文件的數量或大小。你只能這樣做,如果你知道完整的細節開始。否則,我會在每個級別的建議下進行遞歸選擇。