コード:
インポートはjava.io.File; インポートのjava.sql.Connection; インポートのjava.sql.ResultSet; インポートます。java.sql.SQLException; インポートjava.sql.Statementの; インポートは、java.text.SimpleDateFormat; インポートjava.util.Date; 輸入org.apache.log4j.Logger; パブリック クラス DeleteImageAtSpecifiedTime 実装Runnableを{ 静的ロガーロガー= Logger.getLogger(DeleteImageAtSpecifiedTime。クラスは、); / ** *指定されたファイルを削除成功を決定する * * @paramのファイル名のファイルパス *@return そうでない場合はfalseを返し、真真または偽の成功を返す * / パブリック 静的 ブールDELETEFILE(ファイルファイル){ // ファイルファイル=新しい新しいファイル(ファイル名); // 指定したファイル名を指定してFileオブジェクトを作成し たIF(File.Exists( )&& file.isFile()){ // ファイルを削除したいファイルを存在している のIF (File.delete()){ logger.info( "画像の削除に成功!" ); を返す trueに; } 他{ logger.info( "画像の削除に失敗しました!" ); を返す 偽; } }他の{ logger.info( "ファイルが存在しない、削除失敗した!" ); を返す 偽; } } @SuppressWarnings( "静電気のアクセス" ) @Override 公共 ボイドRUN(){ ながら、(真の){ 試み{ のThread.sleep( 1000年* 60 * 60 ;)一度実行時間// logger.info( "定期.........スレッドが眠るローカル絵の終わりを削除" ); } キャッチ(InterruptedExceptionあるE1を){ //TODO自動生成されたcatchブロックの e1.printStackTrace(); } 文字列のSQL = NULL ; 接続の接続 = nullを。 声明 = nullを。 ResultSetたresultSet = nullを。 日付日付 = 新しい日付(); SimpleDateFormat DATEFORMAT = 新しいてSimpleDateFormat( "YYYY-MM-DD HH:MM:SS" )。 文字列形式 = dateFormat.format(日付)。 jdbcUtil jdbcUtil= 新新JdbcUtilは(); SQL =「SELECT =データベースからIMAGEPATH 1. 1およびWHERE「」+ +フォーマット「」 - CREATETIME> 30" ; //現在の時刻が30日間の作成時間以上であるかを決定 logger.info(「行うべきSQL:「+ SQL); 試み{ コネクション = jdbcUtil.getConnection(); ステートメント = Connection.createStatement(); たresultSet = Statement.executeQuery(SQL); 一方(ResultSet.next()){ 文字列IMAGEPATH = resultSet.getString( 「IMAGEPATH」); //ここでは、ローカル画像データベースの絶対パスを取得することです ファイルファイル = 新しい新しいファイル(IMAGEPATH); boolean型ブーン= DELETEFILE(ファイル); // deleteメソッドを呼び出す IF(==ブーンtrueに){ ローカルデータが正常に削除された後、//裁判官は、データベースを削除する SQLが =「1 WHEREデータベースから削除。1 = ' "+ +フォーマット"' - CREATETIME> 30 " ; logger.info( " SQLを実行する: "+ SQL); int型のexecuteUpdate = Statement.executeUpdate(SQL)を、 logger.info(のexecuteUpdate +"行「削除します)。 } } } キャッチ(のSQLException E){ // TODO自動生成キャッチブロック e.printStackTrace(); } } } }
スレッドを起動します。
公共の 静的な 無効メイン(文字列[] args)を{ のRunnable Runnableを = 新しい新DeleteImageAtSpecifiedTime(); スレッドスレッド = 新新(Runnableを)スレッド; Thread.start(); logger.info(「定期的にローカル画像スレッドが開始削除..... .... " ); }
データベース設計のCREATETIMEデフォルトの場所フィールドは、CURRENT_TIMESTAMPを埋める必要があります
CURRENT_TIMESTAMPは、現在のデータ更新を監視する場合、このフィールドは自動的に互いに対応する更新CREATETIMEを作成します。
上記の方法でツールが私の前のエッセイに記載されています、あなたが探しすることができます。