2014-03-12 94 views
-1

一定範圍的文件我已經列出一個給定的路徑選擇一個目錄,爪哇

public static String[] listFiles(String path) 

的文件被命名爲course_1至 - course_15下的文件的功能。

我要實現一些功能,這使我只是在給定的範圍內選擇文件:

public static String[] listFiles(String path, int startIndex, int endIndex) 

,其中作爲參數傳遞整型的對應1 - 15

如。

如果從startIndex = 9,和endIndex的= 11,那麼只有選擇:

course_9 course_10 course_11

有什麼辦法來實現這個whihout使得功能相對複雜?也沒有使用文件擴展名。

編輯: 我還要提到的路徑是存在的文件,其中的根目錄:

for(String content:localDirectory.list()){ 
    if(content!=null){ 
     File contentFile= new File(path + "/" + content);     

     if(!contentFile.isDirectory()){ 
      files.add(contentFile.getAbsolutePath()); 
     } 
    } 
} 

if (files.size()==0) 
    return null; 
} else{ 
    return files.toArray(new String[files.size()]); 

} 

,其中文件是一個ArrayList initalised方法

+2

看[的FilenameFilter(http://docs.oracle.com/javase/7/docs/api/java/io/FilenameFilter.html) – shyam

+0

現在給它一個眼神,感謝 – smurfMT

回答

1

內從File reference

public File[] listFiles(FilenameFilter filter)

返回一個數組 抽象路徑名,表示此抽象路徑名錶示的目錄 中的文件和目錄滿足指定的過濾器。 此方法的行爲與listFiles() 方法的行爲相同,只不過返回數組中的路徑名必須滿足 過濾器。如果給定的過濾器爲空,則接受所有路徑名爲 。否則,當且僅當 的值爲true時,路徑名滿足過濾器,而在其表示的目錄中的文件或目錄的此抽象路徑名和名稱 上調用過濾器的方法時,結果值爲true。

我相信這一個適合您的需求。

編輯: 如果上面沒有幫助,請參閱

public String[] list(FilenameFilter filter)

返回一個字符串名稱所滿足此抽象路徑名錶示的 目錄中的文件和目錄的數組指定 過濾器。除了返回數組中的字符串必須滿足篩選條件外,此方法的行爲與方法的行爲相同,不同之處在於該方法的行爲與 list()方法的行爲相同。如果給定的過濾器爲空,則接受所有名稱 。否則,當且僅當在該指示的目錄中的文件或目錄的此抽象路徑名稱和名稱 上調用過濾器的方法時產生 值true結果。

按照Nathan Hughes的評論。

+0

+1這個,但我認爲File.list(FilenameFilter)會更好地匹配OP所要求的。 –

+0

@NathanHughes謝謝指出,我添加了它。 – Mauren

0

這是基本思想,使用List實施。請注意,此功能僅生成所有可能的文件名,而不檢查這些文件是否真實存在。

public static String[] listFiles(String path, int startIndex, int endIndex) { 
    // create an dynamically growing list to store the resulting file names 
    List<String> namesList = new ArrayList<String>(); 
    // iterate from startIndex to endIndex inclusive 
    for (int i = startIndex; i <= endIndex; i++) { 
     // construct the desired file name 
     String name = path + "_" + i; 
     // and add it to the List 
     namesList.add(name); 
    } 
    // convert the List to an array and return the array 
    return namesList.toArray(); 
} 

其他注意事項:

  • tutorial about Java Collections看看,以瞭解ListArrayList工作。
  • 如果這是關於數組而不是生產代碼的練習,那麼必須將函數重新實現爲僅使用數組。
+0

嗨,不是我正在尋找編輯! – smurfMT

+0

你打算如何調用你的'listFiles'方法? 'path'參數有什麼值? –

+0

它是一個從文件中讀取的字符串,並且是文件保存位置的父目錄。在我使用的方法中'File localDirectory = new File(path);' – smurfMT