2016-11-03 4 views
-1

WindowsのダウンロードディレクトリからCSVファイルを開こうとしています。ここではアルゴリズムです: Java - 最後に更新されたファイルを最終更新日でソートされたフォルダから開く方法

  • ソートディレクトリがトップ
  • オープンで最後に更新されたファイルとの最後の変更日に基づいてウィンドウのダウンロードディレクトリ最後に更新されたファイルへ

    1. Goが

    #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で読み込むためにファイルを開く方法を教えてください。

  • 答えて

    0

    をし、このlinkは私が使用することができた、次のデスクトップクラスを使用してについて:

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

    }

    1

    は、私はあなたの配列が正しくソートされている場合は、このような何かができることを前提としていますStackOverflowの中でより多くを探索した後

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

    私はExcelにパスをハードコードしませんが、これはうまくいくはずです(もちろんExcelのパラメータを受け入れるならば)。 – AxelH

    +0

    あなたのご意見ありがとうございますslayne。私はもっ​​と探求し、解決策を見出しました。私はすぐにそれを掲示するでしょう。ありがとうございました。 – mkarim

    関連する問題