2016-09-26 37 views
0

我想寫一個方法,我可以返回,而不是無效開始寫作vertx調度刪除文件

此外,我想刪除文件申請鎖定未來。

公共靜態無效開始(Vertx vertx)拋出異常{ vertx.setTimer(一個時間間隔,ID - > { 檔案文件=新的文件(config.getStringProperty( 「file.upload.directory」,NULL)。得到());

 if (file.isDirectory()) { 
      File[] files = file.listFiles(); 
      for (File fileName : files) { 
       long diff = new Date().getTime() - fileName.lastModified(); 
     if (diff > config.getLongProperty("file.upload.cleanup.timer.millisecond", 0).get()) { 
        deleteFileUploads(fileName.getAbsolutePath()); 
       } 
      } 
     } 
    }); 
} 

private static void deleteFileUploads(String fileName) { 
    File file = new File(fileName); 
    LOGGER.debug("Name of the file to be deleted"+fileName); 
    file.delete(); 
} 

}

取而代之的是我希望我的功能,像 公共靜態未來開始(Vertx vertx)拋出異常{}

+0

只是關於deleteFileUploads方法的說明:它執行阻止代碼,並從計時器回調調用它。你應該在vertx#executeBlocking中包裝調用。 – tsegismont

回答

0

所以,只要改變無效爲你想要返回而不是?問題是什麼?

public static Future start(Vertx vertx) throws Exception { vertx.setTimer(timeInterval, id -> { File file = new File(config.getStringProperty("file.upload.directory", null).get()); 

     if (file.isDirectory()) { 
      File[] files = file.listFiles(); 
      for (File fileName : files) { 
       long diff = new Date().getTime() - fileName.lastModified(); 
     if (diff > config.getLongProperty("file.upload.cleanup.timer.millisecond", 0).get()) { 
        deleteFileUploads(fileName.getAbsolutePath()); 
       } 
      } 
     } 

    }); 
    //add new line to do your return here. If you want to get something out of the info above then use a public variable? 
    return new Future()......;//define and return what you want here? 
} 

至於文件鎖定嘗試搜索其他問題。例如在這裏看到: Does File.delete in java perform file locking?和在這裏:Locking Executing Files: Windows does, Linux doesn't. Why?