Java - 如何从按上次修改日期排序的文件夹中打开上次更新的文件?

Java - How to Open the Last Updated File From a Folder that is Sorted by last modified date?

我正在尝试从 Windows 中的下载目录打开一个 csv 文件。这是算法:

  1. 进入Window
  2. 中的下载目录
  3. 根据最后修改日期对目录进行排序,最后更新的文件在顶部
  4. 打开上次更新的文件

这是执行#1 和#2 的代码片段(从此 link 获得): 代码片段如下:

import org.apache.commons.io.comparator.LastModifiedFileComparator;
import java.io.File;
import java.util.Arrays;

public class FileSortingTest {
 public static void main(String[] args) {
 File dir = new File("C:\Users\user\Downloads");
    File[] files = dir.listFiles();

   Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
    for (int i = 0; i < files.length; i++) {
        File file = files[i];

       System.out.printf("File %s - %2$tm %2$te,%2$tY%n= ", file.getName(),
               file.lastModified());
  }
}

如何将最后更新的文件放入变量中,然后使用 Excel 打开文件进行读取?

我假设如果您的数组排序正确,您可以这样做:

File lastUpdatedFile = files[0]
Process process = new ProcessBuilder("C:\PathToExcel\Excel.exe",lastUpdatedFile.getAbsolutePath()).start();

在 Whosebug 和这个 link 中探索更多关于使用桌面 class 之后,我能够使用以下内容:

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

public class OpenAFile2 {

public static void main(String[] args) throws IOException{

String userdir = System.getProperty("user.home");

String dirpath2 = userdir + "\Downloads";
File fileName = getLatestFilefromDir(dirpath2);

System.out.println(fileName);    

File file = fileName;

if(!Desktop.isDesktopSupported()){
        System.out.println("Desktop is not supported");
        return;
    }

Desktop desktop = Desktop.getDesktop();
    if(file.exists()) desktop.open(file);

if(file.exists()) desktop.open(file);

}

private static File getLatestFilefromDir(String dirPath2){
        File dir = new File(dirPath2);
        File[] files = dir.listFiles();
        if (files == null || files.length == 0) {
            return null;
        }

        File lastModifiedFile = files[0];
        for (int i = 1; i < files.length; i++) {
           if (lastModifiedFile.lastModified() < files[i].lastModified()) {
               lastModifiedFile = files[i];
           }
        }
        return lastModifiedFile;
    }

}