需要根据创建的日期对文件进行排序

时间:2014-05-21 15:48:10

标签: java android file date comparator

我已经看过其他帖子,但似乎无法在我的帖子中说得好。有人可以帮我这个。我能够查看文件并打开它们,但需要它们列出从最近的创建到最旧的。以下是我的代码。

    private List<String> fileList = new ArrayList<String>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   String root = Environment.getExternalStoragePublicDirectory("/MyAppFolder").
            getAbsolutePath();
    // ListDir(root);

    pdf = new File(root);
    ListDir(pdf);
   }

    void ListDir(File f) {
    File[] files = f.listFiles();
    fileList.clear();

    for (File file : files) {



        fileList.add(file.getName());

    }



    ArrayAdapter<String> directoryList = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, fileList);

    setListAdapter(directoryList);

  }

  public void onListItemClick(ListView parent, View v, int position, long id) {
    //selection.setText(fileList.indexOf(simple_list_item_1));
    OpenPdf(fileList.get(position).toString());
  }



  public void OpenPdf(String path)
  {
      File file = new File(path);
      if (file.exists()) {
          Uri p = Uri.fromFile(file);
          Intent intent = new Intent(Intent.ACTION_VIEW);
          intent.setDataAndType(p, "application/pdf");
          intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

          try {
              startActivity(intent);
          } 
          catch (ActivityNotFoundException e){
          }
      }
  }
}

2 个答案:

答案 0 :(得分:0)

您可以签出以下question,这显示了如何为最后一个mod时间戳执行此操作。它应该很容易适应你的情况。

这里最有趣的部分是比较器。

答案 1 :(得分:0)

Comparator<File> fileDateCmp = new Comparator<File>() {
    public int compare(File f1, File f2) {
        return Long.compare(f1.lastModified(), f2.lastModified());
    }
};


File[] yourArrayOfFiles
Arrays.sort(yourArrayOfFiles, fileDateCmp);

例如在我的学校电脑上:

    Comparator<File> fileDateCmp = new Comparator<File>() {
        public int compare(File f1, File f2) {
            return Long.compare(f1.lastModified(), f2.lastModified());
        }
    };

    File[] yourArrayOfFiles = File.listRoots();

    System.out.println(Arrays.toString(yourArrayOfFiles));

    Arrays.sort(yourArrayOfFiles, fileDateCmp);
    System.out.println(Arrays.toString(yourArrayOfFiles));
    for(File file : yourArrayOfFiles) {
        System.out.print(file + ": ");
        System.out.println(file.lastModified());
    }

输出:

[C:\, D:\, K:\, M:\, P:\, S:\, U:\, V:\]
[D:\, V:\, M:\, K:\, P:\, U:\, S:\, C:\]
D:\: 0
V:\: 1370008587158
M:\: 1386966108069
K:\: 1395062748515
P:\: 1396364590821
U:\: 1398716910066
S:\: 1400518034257
C:\: 1400684450266