我正在尝试使用java nio读取目录中的所有文件,我具有以下目录结构

--dir1
  |
  -file1
  -file2
  -file3


现在我需要确保先读取file3,然后再读取file2,然后再读取file1,即我需要为文件分配一些优先级,然后首先读取较高优先级的文件,而不是读取较低优先级的文件,我如何实现呢?

最佳答案

您可以使用PriorityQueue,因为我已经暗示过以简单的方式希望这可以解决您的问题

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

10-07 16:20
查看更多