Java - 如何从按上次修改日期排序的文件夹中打开上次更新的文件?
Java - How to Open the Last Updated File From a Folder that is Sorted by last modified date?
我正在尝试从 Windows 中的下载目录打开一个 csv 文件。这是算法:
- 进入Window
中的下载目录
- 根据最后修改日期对目录进行排序,最后更新的文件在顶部
- 打开上次更新的文件
这是执行#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;
}
}
我正在尝试从 Windows 中的下载目录打开一个 csv 文件。这是算法:
- 进入Window 中的下载目录
- 根据最后修改日期对目录进行排序,最后更新的文件在顶部
- 打开上次更新的文件
这是执行#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;
}
}