2017-06-12 2 views
0

Je suis en train de lire tous les fichiers dans un répertoire à l'aide nio java, j'ai la structure de répertoire suivantLa lecture de tous les fichiers dans un répertoire Java (assingning priroities aux fichiers)

--dir1 
    | 
    -file1 
    -file2 
    -file3 

Maintenant je dois vous assurer que file3 est lu en premier, puis file2 puis file1, c'est-à-dire que j'ai besoin d'assigner des priorités aux fichiers puis de lire les fichiers de priorité plus élevée plutôt que ceux de priorité inférieure, comment puis-je y parvenir?

+0

Comment attribuez-vous les priorités? Votre exemple est juste de trier les fichiers, file3 -> file2-> file1 ... Ou avez-vous un fichier qui contient des priorités –

+0

dans ce cas le tri fonctionnera, je dois assigner des priorités basées sur le nom du fichier comme filenamea, filenameb , filenamec, chacun de ces fichiers sera d'un type différent – kumarD

+0

Je suis d'accord avec @AbdullahTellioglu si vous voulez accéder aux fichiers par des priorités, vous devez avoir un fichier qui a des noms de fichiers et des priorités qui lui sont associés. –

Répondre

1

Vous pouvez utiliser PriorityQueue comme je l'ai implimented que de manière simple espoir que cela résout votre problème

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()); 
     } 
    } 
} 

Hear je compare votre état en utilisant le comparateur

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; 
     } 
    } 

Affectez vos priorités que vous le souhaitez et lis le .

résultant

file3 
file2 
file1 
+0

comment utiliserez-vous contient au lieu de equalsIgnoreCase – kumarD

+0

disons si le nom de fichier contient une sous-chaîne spécifique alors il devrait être en tête de la file – kumarD

+0

analyser la chaîne, –