2017-06-12 22 views
0

我試圖用Java NIO讀取目錄中的所有文件,我有以下目錄結構讀取目錄的Java(assingning priroities到文件)

--dir1 
    | 
    -file1 
    -file2 
    -file3 

現在我需要確保中的所有文件file3首先被讀取,然後是file2,然後是file1,即我需要爲文件分配一些優先級,然後先讀取優先級較高的文件,而不是優先級較低的文件,我該如何實現?

+0

你如何分配優先級?你的例子只是排序文件,file3 - > file2-> file1 ...或者你有任何文件包含優先 –

+0

在這種情況下,排序將工作,我需要根據文件的名稱,如文件名,文件名,filenamec,這些文件中的每一個都是不同的類型 – kumarD

+0

我同意@AbdullahTellioglu如果你想通過優先級訪問文件,你必須有一個文件名和優先級相關的文件。 –

回答

1

您可以使用PriorityQueue正如我已經implimented,在簡單的方法,希望這能解決你的問題

public class Test 
{ 
    public static void main(String[] args) 
    { 
     Comparator<String> comparator = new StringLengthComparator(); 
     PriorityQueue<String> queue = 
      new PriorityQueue<String>(10, comparator); 
     queue.add("file3"); 
     queue.add("file1"); 
     queue.add("file2"); 
     while (queue.size() != 0) 
     { 
      System.out.println(queue.remove()); 
     } 
    } 
} 

聽我用比較

import java.util.Comparator; 

    public class StringLengthComparator implements Comparator<String> { 
     @Override 
     public int compare(String x, String y) { 
      if (x.equalsIgnoreCase("file3")) { 
       return -1; 
      } 
      if (x.equalsIgnoreCase("file1")) { 
       return 1; 
      } 
      return 0; 
     } 
    } 

指定您的優先級,你比較喜歡你的條件和閱讀 。

所得

file3 
file2 
file1 
+0

你將如何使用包含而不是equalsIgnoreCase – kumarD

+0

假設文件名包含特定的子字符串,那麼它應該在隊列的頭部 – kumarD

+0

解析字符串, –