001 /* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016 package org.opengion.fukurou.util; 017 018 import java.io.File; 019 import java.io.FileFilter; 020 import java.util.List; 021 import java.util.ArrayList; 022 import java.util.Calendar; 023 import java.util.StringTokenizer; 024 025 import java.util.regex.Pattern; 026 import java.util.regex.Matcher; 027 028 /** 029 * HybsFileFilter.java ã¯ã€è¤?•°ã® FileFilter ã‚’é?次実行ã™ã‚?フィルタクラスã§ã™ã? 030 * 031 * FileFilter インターフェースを継承ã—ã?File クラス㮠listFiles(FileFilter) メソãƒ?ƒ‰ã« 032 * 渡ã™ã“ã¨ãŒã§ãã¾ã™ã? 033 * Filterã«è¨å®šã•れãŸè¤?•°ã®ãƒ•ィルタã™ã¹ã¦ã‚’æº?Ÿã™å?åˆã?時ã?ã¿ã€accept(File pathname) 034 * メソãƒ?ƒ‰ã¯ã€true ã‚’è¿”ã—ã¾ã™ã? 035 * 036 * ã“ã?実è£??åŒæœŸåŒ–ã•れã¾ã›ã‚“ã€? 037 * 038 * @version 4.0 039 * @author Kazuhiko Hasegawa 040 * @since JDK5.0, 041 */ 042 public final class HybsFileFilter implements FileFilter { 043 private final List<FileFilter> list = new ArrayList<FileFilter>(); 044 private final boolean isUseDIR ; 045 046 /** 047 * 引数ã«ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®åˆ¤å®šã‚’行ã†ã‹ã©ã?‹ã‚’指定ã™ã‚‹ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§ã™ã? 048 * ã“ã“ã§ã€true を指定ã™ã‚‹ã¨ã€ãƒ•ァイルã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ä¸¡æ–¹ã«å¯¾ã—㦠049 * 処ç?‚’実施ã—ã¾ã™ã? 050 * ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã®åˆ¤å®šã?å ´åˆã?acceptメソãƒ?ƒ‰ã§ã€false ãŒè¿”る㨠051 * ãれ以下ã?処ç?‚‚実行ã•れã¾ã›ã‚“ã€? 052 * 053 * @og.rev 5.1.2.0 (2010/01/01) 引数ã¤ãコンストラクタ追åŠ? 054 * 055 * @param useDIR 判定をãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã‚‚行ã†ã‹ã©ã?‹ 056 */ 057 public HybsFileFilter( final boolean useDIR ) { 058 super(); 059 isUseDIR = useDIR; 060 } 061 062 /** 063 * æŒ?®šã•ã‚ŒãŸæŠ½è±¡ãƒ‘ã‚¹åãŒãƒ‘スåリストã«å«ã¾ã‚Œã‚‹å¿?¦ãŒã‚ã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 064 * ã“ã“ã§ã®åˆ¤å®šãƒã‚¸ãƒ?‚¯ã§ã¯ã€ãƒ•ァイルã«ã¤ã?¦ã®ã¿å‡¦ç?—ã¾ã™ã? 065 * ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã€å¸¸ã«ã€true ã‚’è¿”ã—ã¾ã™ã? 066 */ 067 public HybsFileFilter() { 068 this( false ); 069 } 070 071 /** 072 * æŒ?®šã•ã‚ŒãŸæŠ½è±¡ãƒ‘ã‚¹åãŒãƒ‘スåリストã«å«ã¾ã‚Œã‚‹å¿?¦ãŒã‚ã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 073 * ã“ã“ã§ã®åˆ¤å®šãƒã‚¸ãƒ?‚¯ã§ã¯ã€ãƒ•ァイルã«ã¤ã?¦ã®ã¿å‡¦ç?—ã¾ã™ã? 074 * ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã€å¸¸ã«ã€true ã‚’è¿”ã—ã¾ã™ã? 075 * 076 * @param pathname ファイルオブジェクãƒ? 077 * 078 * @return パスåリストã«å«ã¾ã‚Œã‚‹ã‹ã©ã?‹ 079 * @see java.io.FileFilter#accept(File) 080 */ 081 public boolean accept( final File pathname ) { 082 if( pathname != null && (pathname.isFile() || isUseDIR) ) { // 5.1.2.0 (2010/01/01) 083 int size = list.size(); 084 for( int i=0; i<size; i++ ) { 085 FileFilter filter = list.get(i); 086 if( !filter.accept( pathname ) ) { 087 return false; 088 } 089 } 090 } 091 return true; 092 } 093 094 /** 095 * 外部æŒ?®šãƒ•ィルタ??å†?ƒ¨åˆ¤å®šæ¡ä»¶ã«ã€ãƒ•ィルタを追åŠ?—ã¾ã™ã? 096 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 097 * 098 * @param filter 外部æŒ?®šãƒ•ィルタ 099 */ 100 public void addFileFilter( final FileFilter filter ) { 101 if( filter != null ) { list.add( filter ); } 102 } 103 104 /** 105 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã•ã‚ŒãŸæŽ¥é 辞ã§å§‹ã¾ã‚‹å?åˆã?スルー(鏿Š?ã•れã¾ã™ã? 106 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 107 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 108 * 109 * @param prefix 接é è¾? 110 * @see java.lang.String#startsWith(String) 111 */ 112 public void startsWith( final String prefix ) { 113 startsWith( prefix, false ); // å転ã—ãªã? 114 // if( prefix != null ) { 115 // list.add( new StartsWithFilter( prefix ) ); 116 // } 117 } 118 119 /** 120 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã•ã‚ŒãŸæŽ¥é 辞ã§å§‹ã¾ã‚‹å?åˆã?スルー(鏿Š?ã•れã¾ã™ã? 121 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 122 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 123 * reverse = true ã«è¨å®šã™ã‚‹ã¨ã€çµæžœã‚’å転ã•ã›ã¾ã™ã? 124 * 125 * @og.rev 5.1.2.0 (2010/01/01) reverse属æ?ã®è¿½åŠ? 126 * 127 * @param prefix 接é è¾? 128 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 129 * @see java.lang.String#startsWith(String) 130 */ 131 public void startsWith( final String prefix,final boolean reverse ) { 132 if( prefix != null ) { 133 list.add( new StartsWithFilter( prefix,reverse ) ); 134 } 135 } 136 137 /** 138 * æŒ?®šã•ã‚ŒãŸæŽ¥é 辞ã§å§‹ã¾ã‚‹å?åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 139 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 140 * 141 * @og.rev 5.1.2.0 (2010/01/01) '|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šå?ç??追åŠ??reverse属æ?ã®è¿½åŠ? 142 * 143 * @version 4.0 144 * @author Kazuhiko Hasegawa 145 * @since JDK5.0, 146 */ 147 private static class StartsWithFilter implements FileFilter { 148 // private final String pfix ; 149 private final String[] pfix ; 150 private final int cnt ; 151 private final boolean rvse ; 152 153 /** 154 * 接é 辞フィルターオブジェクトを作æ?ã—ã¾ã™ã? 155 * 156 * @param desc true:æ˜?? / false:é™é? 157 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 158 */ 159 StartsWithFilter( final String prefix,final boolean reverse ) { 160 // pfix = prefix; 161 rvse = reverse; 162 163 StringTokenizer token = new StringTokenizer( prefix, "|" ); 164 cnt = token.countTokens(); 165 166 pfix = new String[cnt]; 167 168 for( int i=0; i<cnt; i++ ) { 169 pfix[i] = token.nextToken(); 170 } 171 } 172 173 /** 174 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 175 * 176 * @param pathname ファイルオブジェクãƒ? 177 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 178 * @see java.io.FileFilter#accept( File ) 179 */ 180 public boolean accept( final File pathname ) { 181 // return pathname.getName().startsWith( pfix ); 182 183 for( int i=0; i<cnt; i++ ) { 184 if( pathname.getName().startsWith( pfix[i] ) ) { 185 return !rvse; 186 } 187 } 188 return rvse; 189 } 190 } 191 192 /** 193 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã•ã‚ŒãŸæŽ¥é 辞ã§çµ‚ã‚ã‚‹å?åˆã?スルー(鏿Š?ã•れã¾ã™ã? 194 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 195 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 196 * 197 * @param suffix 接尾è¾? 198 * @see java.lang.String#endsWith(String) 199 */ 200 public void endsWith( final String suffix ) { 201 endsWith( suffix, false ); // å転ã—ãªã? 202 // if( suffix != null ) { 203 // list.add( new EndsWithFilter( suffix ) ); 204 // } 205 } 206 207 /** 208 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã•ã‚ŒãŸæŽ¥é 辞ã§çµ‚ã‚ã‚‹å?åˆã?スルー(鏿Š?ã•れã¾ã™ã? 209 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 210 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 211 * reverse = true ã«è¨å®šã™ã‚‹ã¨ã€çµæžœã‚’å転ã•ã›ã¾ã™ã? 212 * 213 * @og.rev 5.1.2.0 (2010/01/01) reverse属æ?ã®è¿½åŠ? 214 * 215 * @param suffix 接尾è¾? 216 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 217 * @see java.lang.String#endsWith(String) 218 */ 219 public void endsWith( final String suffix,final boolean reverse ) { 220 if( suffix != null ) { 221 list.add( new EndsWithFilter( suffix,reverse ) ); 222 } 223 } 224 225 /** 226 * æŒ?®šã•ã‚ŒãŸæŽ¥é 辞ã§çµ‚ã‚ã‚‹å?åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 227 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 228 * 229 * @og.rev 5.1.2.0 (2010/01/01) '|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šå?ç??追åŠ??reverse属æ?ã®è¿½åŠ? 230 * 231 * @version 4.0 232 * @author Kazuhiko Hasegawa 233 * @since JDK5.0, 234 */ 235 private static class EndsWithFilter implements FileFilter { 236 // private final String sfix ; 237 private final String[] sfix ; 238 private final int cnt ; 239 private final boolean rvse ; 240 241 /** 242 * 接é 辞フィルターオブジェクトを作æ?ã—ã¾ã™ã? 243 * 244 * @param desc true:æ˜?? / false:é™é? 245 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 246 */ 247 EndsWithFilter( final String suffix,final boolean reverse ) { 248 // sfix = suffix; 249 rvse = reverse; 250 251 StringTokenizer token = new StringTokenizer( suffix, "|" ); 252 cnt = token.countTokens(); 253 254 sfix = new String[cnt]; 255 256 for( int i=0; i<cnt; i++ ) { 257 sfix[i] = token.nextToken(); 258 } 259 } 260 261 /** 262 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 263 * 264 * @param pathname ファイルオブジェクãƒ? 265 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 266 * @see java.io.FileFilter#accept( File ) 267 */ 268 public boolean accept( final File pathname ) { 269 // return pathname.getName().endsWith( sfix ); 270 271 for( int i=0; i<cnt; i++ ) { 272 if( pathname.getName().endsWith( sfix[i] ) ) { 273 return !rvse; 274 } 275 } 276 return rvse; 277 } 278 } 279 280 /** 281 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã•ã‚ŒãŸæ–?—å?ãŒãƒ•ァイルåã«å«ã¾ã‚Œã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 282 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 283 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 284 * 285 * @param str æŒ?®šã?部åˆ?–‡å—å? 286 */ 287 public void instr( final String str ) { 288 instr( str, false ); // å転ã—ãªã? 289 // if( str != null ) { 290 // list.add( new InstrFilter( str ) ); 291 // } 292 } 293 294 /** 295 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã•ã‚ŒãŸæ–?—å?ãŒãƒ•ァイルåã«å«ã¾ã‚Œã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 296 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 297 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 298 * reverse = true ã«è¨å®šã™ã‚‹ã¨ã€çµæžœã‚’å転ã•ã›ã¾ã™ã? 299 * 300 * @og.rev 5.1.2.0 (2010/01/01) reverse属æ?ã®è¿½åŠ? 301 * 302 * @param str æŒ?®šã?部åˆ?–‡å—å? 303 * @param reverse çµæžœã‚’å転ã•ã›ã‚‹ã‹ã©ã?‹(true:å転) 304 */ 305 public void instr( final String str,final boolean reverse ) { 306 if( str != null ) { 307 list.add( new InstrFilter( str,reverse ) ); 308 } 309 } 310 311 /** 312 * æŒ?®šã•ã‚ŒãŸæ–?—å?ãŒãƒ•ァイルåã«å«ã¾ã‚Œã‚‹å ´åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 313 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 314 * 315 * @og.rev 5.1.2.0 (2010/01/01) '|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šå?ç??追åŠ??reverse属æ?ã®è¿½åŠ? 316 * 317 * @version 4.0 318 * @author Kazuhiko Hasegawa 319 * @since JDK5.0, 320 */ 321 private static class InstrFilter implements FileFilter { 322 // private final String instr ; 323 private final String[] instr ; 324 private final int cnt ; 325 private final boolean rvse ; 326 327 /** 328 * æ–?—å?åŒ?«ãƒ•ィルターオブジェクトを作æ?ã—ã¾ã™ã? 329 * 330 * @param desc true:æ˜?? / false:é™é? 331 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 332 */ 333 InstrFilter( final String str,final boolean reverse ) { 334 // instr = str; 335 rvse = reverse; 336 337 StringTokenizer token = new StringTokenizer( str, "|" ); 338 cnt = token.countTokens(); 339 340 instr = new String[cnt]; 341 342 for( int i=0; i<cnt; i++ ) { 343 instr[i] = token.nextToken(); 344 } 345 } 346 347 /** 348 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 349 * 350 * @param pathname ファイルオブジェクãƒ? 351 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 352 * @see java.io.FileFilter#accept( File ) 353 */ 354 public boolean accept( final File pathname ) { 355 // return ( pathname.getName().indexOf( instr ) >= 0 ); 356 357 for( int i=0; i<cnt; i++ ) { 358 if( pathname.getName().indexOf( instr[i] ) >= 0 ) { 359 return !rvse; 360 } 361 } 362 return rvse; 363 } 364 } 365 366 /** 367 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルåãŒä¸??ã™ã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 368 * 大æ–?—å°æ–‡å—ã?区別ã—ã¾ã›ã‚“ã€? 369 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 370 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 371 * 372 * @param str ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å—å? 373 */ 374 public void fileEquals( final String str ) { 375 fileEquals( str, false ); // å転ã—ãªã? 376 // if( str != null ) { 377 // list.add( new EqualsFilter( str ) ); 378 // } 379 } 380 381 /** 382 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルåãŒä¸??ã™ã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 383 * 大æ–?—å°æ–‡å—ã?区別ã—ã¾ã›ã‚“ã€? 384 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 385 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 386 * reverse = true ã«è¨å®šã™ã‚‹ã¨ã€çµæžœã‚’å転ã•ã›ã¾ã™ã? 387 * 388 * @og.rev 5.1.2.0 (2010/01/01) reverse属æ?ã®è¿½åŠ? 389 * 390 * @param str ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å—å? 391 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 392 */ 393 public void fileEquals( final String str,final boolean reverse ) { 394 if( str != null ) { 395 list.add( new EqualsFilter( str,reverse ) ); 396 } 397 } 398 399 /** 400 * ファイルåãŒä¸??ã™ã‚‹å ´åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 401 * 引数ã«ã€?|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šã—ãŸå?åˆã?ã€OR 判æ–(ã©ã‚Œã‹ãŒä¸??)ã—ã¾ã™ã? 402 * 403 * @og.rev 5.1.2.0 (2010/01/01) '|' 区åˆ?‚Šæ–?—ã§è¤?•°è¨å®šå?ç??追åŠ??reverse属æ?ã®è¿½åŠ? 404 * 405 * @version 4.0 406 * @author Kazuhiko Hasegawa 407 * @since JDK5.0, 408 */ 409 private static class EqualsFilter implements FileFilter { 410 // private final String eqstr ; 411 private final String[] eqstr ; 412 private final int cnt ; 413 private final boolean rvse ; 414 415 /** 416 * ファイルåä¸??フィルターオブジェクトを作æ?ã—ã¾ã™ã? 417 * 418 * @param desc true:æ˜?? / false:é™é? 419 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 420 */ 421 EqualsFilter( final String str,final boolean reverse ) { 422 // eqstr = str; 423 rvse = reverse; 424 425 StringTokenizer token = new StringTokenizer( str, "|" ); 426 cnt = token.countTokens(); 427 428 eqstr = new String[cnt]; 429 430 for( int i=0; i<cnt; i++ ) { 431 eqstr[i] = token.nextToken(); 432 } 433 } 434 435 /** 436 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 437 * 438 * @param pathname ファイルオブジェクãƒ? 439 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 440 * @see java.io.FileFilter#accept( File ) 441 */ 442 public boolean accept( final File pathname ) { 443 // return pathname.getName().equalsIgnoreCase( eqstr ); 444 445 for( int i=0; i<cnt; i++ ) { 446 if( pathname.getName().equalsIgnoreCase( eqstr[i] ) ) { 447 return !rvse; 448 } 449 } 450 return rvse; 451 } 452 } 453 454 /** 455 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルåãŒã€æŒ‡å®šã•れ㟠456 * <a href="/java/api14/api/java/util/regex/Pattern.html#sum">æ£è¦è¡¨ç¾</a> 457 * ã¨ä¸??ã™ã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã? 458 * 大æ–?—å°æ–‡å—ã?区別ã—ã¾ã›ã‚“ã€? 459 * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ; 460 * pattern.matcher( pathname.getName() ).find() == true ã¨åŒã˜çµæžœãŒå¾—られã¾ã™ã? 461 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 462 * 463 * @param str ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å—å?(æ£è¦è¡¨ç¾) 464 * @see java.util.regex.Pattern#compile(String,int) 465 * @see java.util.regex.Matcher#find() 466 */ 467 public void matches( final String str ) { 468 matches( str, false ); // å転ã—ãªã? 469 // if( str != null ) { 470 // list.add( new MatchesFilter( str ) ); 471 // } 472 } 473 474 /** 475 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルåãŒã€æŒ‡å®šã•れ㟠476 * <a href="/java/api14/api/java/util/regex/Pattern.html#sum">æ£è¦è¡¨ç¾</a> 477 * ã¨ä¸??ã™ã‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã? 478 * 大æ–?—å°æ–‡å—ã?区別ã—ã¾ã›ã‚“ã€? 479 * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ; 480 * pattern.matcher( pathname.getName() ).find() == true ã¨åŒã˜çµæžœãŒå¾—られã¾ã™ã? 481 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 482 * reverse = true ã«è¨å®šã™ã‚‹ã¨ã€çµæžœã‚’å転ã•ã›ã¾ã™ã? 483 * 484 * @og.rev 5.1.2.0 (2010/01/01) reverse属æ?ã®è¿½åŠ? 485 * 486 * @param str ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å—å?(æ£è¦è¡¨ç¾) 487 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 488 * @see java.util.regex.Pattern#compile(String,int) 489 * @see java.util.regex.Matcher#find() 490 */ 491 public void matches( final String str,final boolean reverse ) { 492 if( str != null ) { 493 list.add( new MatchesFilter( str,reverse ) ); 494 } 495 } 496 497 /** 498 * ファイルåãŒã€æŒ‡å®šã•ã‚ŒãŸæ£è¦è¡¨ç¾ã¨ä¸??ã™ã‚‹å ´åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 499 * 500 * @og.rev 5.1.2.0 (2010/01/01) reverse属æ?ã®è¿½åŠ? 501 * 502 * @version 4.0 503 * @author Kazuhiko Hasegawa 504 * @since JDK5.0, 505 */ 506 private static class MatchesFilter implements FileFilter { 507 private final Pattern pattern ; 508 private final boolean rvse ; 509 510 /** 511 * æ£è¦è¡¨ç¾ä¸??フィルターオブジェクトを作æ?ã—ã¾ã™ã? 512 * 513 * @param desc true:æ˜?? / false:é™é? 514 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 515 */ 516 MatchesFilter( final String str,final boolean reverse ) { 517 pattern = Pattern.compile( str,Pattern.CASE_INSENSITIVE ); 518 rvse = reverse; 519 } 520 521 /** 522 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 523 * 524 * @param pathname ファイルオブジェクãƒ? 525 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 526 * @see java.io.FileFilter#accept( File ) 527 */ 528 public boolean accept( final File pathname ) { 529 Matcher match = pattern.matcher( pathname.getName() ); 530 // return match.find() ; 531 if( match.find() ) { return !rvse; } 532 else { return rvse; } 533 } 534 } 535 536 /** 537 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルåãŒã€æŒ‡å®šã•れ㟠538 * <a href="/java/api14/api/java/util/regex/Pattern.html#sum">æ£è¦è¡¨ç¾</a> 539 * ã¨ä¸??ã—ãªã??åˆã?スルー(鏿Š?ã•れã¾ã™ã? 540 * 大æ–?—å°æ–‡å—ã?区別ã—ã¾ã›ã‚“ã€? 541 * Pattern.compile( str,Pattern.CASE_INSENSITIVE ) ; 542 * pattern.matcher( pathname.getName() ).find() == false ã¨åŒã˜çµæžœãŒå¾—られã¾ã™ã? 543 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 544 * 545 * @param str ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å—å?(æ£è¦è¡¨ç¾) ã¨ãƒžãƒƒãƒã—ãªã? 546 * @see java.util.regex.Pattern#compile(String,int) 547 * @see java.util.regex.Matcher#find() 548 */ 549 // public void unMatches( final String str ) { 550 // if( str != null ) { 551 // list.add( new UnMatchesFilter( str ) ); 552 // } 553 // } 554 555 /** 556 * ファイルåãŒã€æŒ‡å®šã•ã‚ŒãŸæ£è¦è¡¨ç¾ã¨ä¸??ã—ãªã??åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 557 * 558 * @version 4.0 559 * @author Kazuhiko Hasegawa 560 * @since JDK5.0, 561 */ 562 // private static class UnMatchesFilter implements FileFilter { 563 // private final Pattern pattern ; 564 // 565 // /** 566 // * æ£è¦è¡¨ç¾ä¸ä¸??フィルターオブジェクトを作æ?ã—ã¾ã™ã? 567 // * 568 // * @param desc true:æ˜?? / false:é™é? 569 // */ 570 // UnMatchesFilter( String str ) { 571 // pattern = Pattern.compile( str,Pattern.CASE_INSENSITIVE ); 572 // } 573 // 574 // /** 575 // * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 576 // * 577 // * @param pathname ファイルオブジェクãƒ? 578 // * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 579 // * @see java.io.FileFilter#accept( File ) 580 // */ 581 // public boolean accept( final File pathname ) { 582 // Matcher match = pattern.matcher( pathname.getName() ); 583 // return ! match.find() ; 584 // } 585 // } 586 587 /** 588 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã?タイãƒ?‚¹ã‚¿ãƒ³ãƒ—以後ã«å¤‰æ›´ã•れã¦ã?‚‹å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 589 * ãƒ?‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã€ã“ã“ã?判定ã§ã¯ç„¡è¦–ã—ã¾ã™ã?(å¿?š true ã‚’è¿”ã—ã¾ã? 590 * 日付ã‘ã®æŒ?®šã«ã€YYYYMMDD å½¢å¼ã? ?˜æ–‡å—æ•°å—æ–‡å—å?以外ã«ã€? 591 * TODAY ã‚?YESTERDAY ãªã©ã‚‚使用ã§ãã¾ã™ã? 592 * TODAY ã¯ã€å®Ÿè¡Œæ—¥ã® 00:00:00 を基準時刻ã¨ã—ã?YESTERDAY ã¯ã€ãã®å‰æ—¥ã«ãªã‚Šã¾ã™ã? 593 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 594 * 595 * @param modify 時刻を表ã?long 値(ミリ秒å˜ä½? 596 */ 597 public void lastModified( final String modify ) { 598 if( modify != null ) { 599 list.add( new ModifyFileFilter( modify ) ); 600 } 601 } 602 603 /** 604 * 共通å?ç?¼šå˜ä½è¨˜å·ã®ä»˜ä¸Žã•れãŸãƒã‚¤ãƒˆæ–‡å—å?ã‹ã‚‰ã€long値ã§ã‚ã‚‹ãƒã‚¤ãƒˆã‚’求ã‚ã¾ã™ã? 605 * ç¾æ™‚点ã§ã¯ã€K , KB , M , MB , G , GB ã®ã¿å˜ä½æŒ‡å®šå¯èƒ½ã§ã™ã? 606 * ãれãžã‚Œã€å?ã®å€¤ã«å¯¾ã—ã¦ã€?024å€ã•れã¾ã™ã? 607 * 608 * 処ç?Œæ£å¸¸ã«å‡ºæ¥ãªã??åˆã?ã€?1L ã‚’è¿”ã—ã¾ã™ã? 609 * 610 * @og.rev 5.7.4.3 (2014/03/28) æ–°è¦è¿½åŠ? 611 * 612 * @param slen å˜ä½è¨˜å·ä»˜ããƒã‚¤ãƒˆå? 613 * @return longã«æ›ç®—ã—ãŸãƒã‚¤ãƒˆå? 614 */ 615 private long getByteSize( final String slen ) { 616 if( slen == null ) { return -1L; } 617 618 String buf = slen; 619 int size = buf.length(); 620 621 // 'B' ã¯ã€å˜ä½æ›ç®—ã«é–¢ä¿‚ãªã?‚ºã€ã‚れã?削除ã—ã¾ã™ã? 622 if( size > 0 && 'B' == buf.charAt( size-1 ) ) { 623 buf = buf.substring( 0,size-1 ); // 'B' ãŒå‰Šé™¤ã•ã‚ŒãŸæ–‡å—å? 624 size--; 625 } 626 627 long rtn = -1L; 628 629 long tani = -1L; // 変æ›ã•れãŸã‹ã©ã?‹ã®åˆ¤å®šã‚‚å…¼ãã‚‹ã? 630 if( size > 0 ) { 631 char ch = buf.charAt( size-1 ); // 'K' , 'M' , 'G' ã®ãƒã‚§ãƒ?‚¯ 632 switch( ch ) { 633 case 'K' : tani=1024L; break; 634 case 'M' : tani=1024L * 1024L ; break; 635 case 'G' : tani=1024L * 1024L * 1024L ; break; 636 default : break; 637 } 638 if( tani > 0L ) { // ã¤ã¾ã‚Šã?å˜ä½æ›ç®—ãŒè¡Œã‚れãŸå ´åˆã? 639 buf = buf.substring( 0,size-1 ); // 'K','M','G' ãŒå‰Šé™¤ã•ã‚ŒãŸæ–‡å—å? 640 size--; // ã“ã“ã§ç©ºæ–?—å?ã«ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã? 641 } 642 else { 643 tani = 1L; // å˜ä½æ›ç®—ãŒãªã??åˆã?ã€?¼‘å?ã€? 644 } 645 } 646 647 if( size > 0 ) { 648 // å…ˆã?å˜ä½æ›ç®—ã§ã€?L(=?‘å?)ã‚’è¨å®šã—ã¦ã€if ã‚’ç„¡ãã—ãŸãŒã€long ã®æŽ›ã‘ç®—ãªã®ã§ã€ãªã‚“ã¨ãªã抵抗ãŒã‚ã‚‹ã€? 649 rtn = tani * Long.parseLong( buf ); // buf ã¯ã™ã§ã«æ•°å—ã ã‘ã«ãªã£ã¦ã?‚‹ãƒã‚ºã€? 650 } 651 652 return rtn ; 653 } 654 655 /** 656 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã?大ãã•より大ãã„ファイルã®å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 657 * 658 * æŒ?®šã?ãƒã‚¤ãƒˆå˜ä½ã§ã™ãŒã€?*KB , **MB , **GB ãªã©ã®å˜ä½ã‚’付ã‘る事もå¯èƒ½ã§ã™ã? 659 * ç¾æ™‚点ã§ã¯ã€K , KB , M , MB , G , GB ã®ã¿æŒ?®šå¯èƒ½ã§ã™ã? 660 * 661 * @og.rev 5.7.4.3 (2014/03/28) isLarger,isSmaller属æ?ã‚’æ–‡å—å?ã«å¤‰æ›´ 662 * 663 * @param slen ファイルã®å¤§ãã•(ãƒã‚¤ãƒˆå˜ä½?。åŒå€¤ã‚’å«ã‚? 664 */ 665 // public void isLarger( final int len ) { 666 // if( len >= 0 ) { 667 // list.add( new IsLargerFilter( len ) ); 668 // } 669 // } 670 public void isLarger( final String slen ) { 671 long len = getByteSize( slen ); 672 673 if( len >= 0L ) { 674 list.add( new IsLargerFilter( len ) ); 675 } 676 } 677 678 /** 679 * æŒ?®šã?大ãã•より大ãã„ファイルã®å ´åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 680 * 681 * @version 4.0 682 * @author Kazuhiko Hasegawa 683 * @since JDK5.0, 684 */ 685 private static class IsLargerFilter implements FileFilter { 686 private final long size ; 687 688 /** 689 * 大ãã„ファイルフィルターオブジェクトを作æ?ã—ã¾ã™ã? 690 * 691 * @og.rev 5.7.4.3 (2014/03/28) isLarger,isSmaller属æ?ã‚’longã«å¤‰æ›´ 692 * 693 * @param len ファイルã®å¤§ãã•(ãƒã‚¤ãƒˆå˜ä½?。åŒå€¤ã‚’å«ã‚? 694 */ 695 // IsLargerFilter( int len ) { 696 IsLargerFilter( final long len ) { 697 size = len ; 698 } 699 700 /** 701 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 702 * 703 * @param pathname ファイルオブジェクãƒ? 704 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 705 * @see java.io.FileFilter#accept( File ) 706 */ 707 public boolean accept( final File pathname ) { 708 return pathname.length() >= size; 709 } 710 } 711 712 /** 713 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??æŒ?®šã?大ãã•よりå°ã•ã?ƒ•ァイルã®å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 714 * 引数ã?0以ä¸?マイナス) ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 715 * 716 * @og.rev 5.7.4.3 (2014/03/28) isLarger,isSmaller属æ?ã‚’æ–‡å—å?ã«å¤‰æ›´ 717 * 718 * @param slen ファイルã®å¤§ãã•(ãƒã‚¤ãƒˆå˜ä½?。åŒå€¤ã‚’å«ã¾ãªã?? 719 */ 720 // public void isSmaller( final int len ) { 721 // if( len >= 0 ) { 722 // list.add( new IsSmallerFilter( len ) ); 723 // } 724 // } 725 public void isSmaller( final String slen ) { 726 long len = getByteSize( slen ); 727 728 if( len >= 0L ) { 729 list.add( new IsSmallerFilter( len ) ); 730 } 731 } 732 733 /** 734 * æŒ?®šã?大ãã•よりå°ã•ã?ƒ•ァイルã®å ´åˆé¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 735 * 736 * @version 4.0 737 * @author Kazuhiko Hasegawa 738 * @since JDK5.0, 739 */ 740 private static class IsSmallerFilter implements FileFilter { 741 private final long size ; 742 743 /** 744 * å°ã•ã?ƒ•ァイルフィルターオブジェクトを作æ?ã—ã¾ã™ã? 745 * 746 * @og.rev 5.7.4.3 (2014/03/28) isLarger,isSmaller属æ?ã‚’longã«å¤‰æ›´ 747 * 748 * @param len ファイルã®å¤§ãã•(ãƒã‚¤ãƒˆå˜ä½?。åŒå€¤ã‚’å«ã¾ãªã?? 749 */ 750 // IsSmallerFilter( int len ) { 751 IsSmallerFilter( final long len ) { 752 size = len ; 753 } 754 755 /** 756 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 757 * 758 * @param pathname ファイルオブジェクãƒ? 759 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 760 * @see java.io.FileFilter#accept( File ) 761 */ 762 public boolean accept( final File pathname ) { 763 return pathname.length() < size; 764 } 765 } 766 767 /** 768 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルã?hidden ã®å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 769 * 引数ãŒtrueã®å ´åˆã?ã€hiddenファイルã®ã¿ã‚’é¸æŠžã—ã¾ã™ã? 770 * falseã®å ´åˆã?ã€hiddenãƒ•ã‚¡ã‚¤ãƒ«ä»¥å¤–ã‚’é¸æŠžã—ã¾ã™ã?(ã¤ã¾ã‚?hiddenファイルをブãƒãƒ?‚¯ã—ã¾ã™ã?) 771 * hidden をブãƒãƒ?‚¯ã—ãŸã??åˆã?ã€false ã‚’è¨å®šã—ã€ã™ã¹ã¦é¸æŠžã—ãŸã„å ´åˆã?ã€filterè¨å®šã‚’ã—ãªã?º‹ã«ãªã‚Šã¾ã™ã? 772 * 引数ã?null ã®å ´åˆã?ã€è¿½åŠ?—ã¾ã›ã‚“ã€? 773 * 774 * @og.rev 5.7.5.0 (2014/04/04) æ–°è¦è¿½åŠ? 775 * 776 * @param flag [true:/false] 777 */ 778 public void isHidden( final String flag ) { 779 isHidden( flag, false ); // å転ã—ãªã? 780 } 781 782 /** 783 * å†?ƒ¨åˆ¤å®šãƒ•ィルタ??ファイルã?hidden ã®å ´åˆã?スルー(鏿Š?ã•れã¾ã™ã? 784 * 引数ãŒtrueã®å ´åˆã?ã€hiddenファイルã®ã¿ã‚’é¸æŠžã—ã¾ã™ã? 785 * falseã®å ´åˆã?ã€hiddenãƒ•ã‚¡ã‚¤ãƒ«ä»¥å¤–ã‚’é¸æŠžã—ã¾ã™ã?(ã¤ã¾ã‚?hiddenファイルをブãƒãƒ?‚¯ã—ã¾ã™ã?) 786 * hidden をブãƒãƒ?‚¯ã—ãŸã??åˆã?ã€false ã‚’è¨å®šã—ã€ã™ã¹ã¦é¸æŠžã—ãŸã„å ´åˆã?ã€filterè¨å®šã‚’ã—ãªã?º‹ã«ãªã‚Šã¾ã™ã? 787 * reverse = true ã«è¨å®šã™ã‚‹ã¨ã€çµæžœã‚’å転ã•ã›ã¾ã™ã? 788 * 789 * @og.rev 5.7.5.0 (2014/04/04) æ–°è¦è¿½åŠ? 790 * 791 * @param flag [true:/false] 792 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 793 */ 794 public void isHidden( final String flag,final boolean reverse ) { 795 if( flag != null ) { 796 list.add( new IsHiddenFilter( flag,reverse ) ); 797 } 798 } 799 800 /** 801 * ファイルã?hidden ã®å ´åˆã«é¸æŠžã•れる FileFilter インターフェースã®å®Ÿè£??部クラスã§ã™ã? 802 * 引数ãŒtrueã®å ´åˆã?ã€hiddenファイルã®ã¿ã‚’é¸æŠžã—ã¾ã™ã? 803 * falseã®å ´åˆã?ã€hiddenãƒ•ã‚¡ã‚¤ãƒ«ä»¥å¤–ã‚’é¸æŠžã—ã¾ã™ã?(ã¤ã¾ã‚?hiddenファイルをブãƒãƒ?‚¯ã—ã¾ã™ã?) 804 * hidden をブãƒãƒ?‚¯ã—ãŸã??åˆã?ã€false ã‚’è¨å®šã—ã€ã™ã¹ã¦é¸æŠžã—ãŸã„å ´åˆã?ã€filterè¨å®šã‚’ã—ãªã?º‹ã«ãªã‚Šã¾ã™ã? 805 * 806 * @og.rev 5.7.5.0 (2014/04/04) æ–°è¦è¿½åŠ? 807 * 808 * @version 6.0 809 * @author Kazuhiko Hasegawa 810 * @since JDK6.0, 811 */ 812 private static class IsHiddenFilter implements FileFilter { 813 private final boolean flg ; 814 private final boolean rvse ; 815 816 /** 817 * hiddenフィルターオブジェクトを作æ?ã—ã¾ã™ã? 818 * 819 * @param flag true:hiddenã®ã¿ / false: 820 * @param reverse true:çµæžœã‚’å転ã™ã‚‹ 821 */ 822 IsHiddenFilter( final String flag,final boolean reverse ) { 823 flg = Boolean.parseBoolean( flag ); 824 rvse = reverse; 825 } 826 827 /** 828 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 829 * 830 * @param pathname ファイルオブジェクãƒ? 831 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 832 * @see java.io.FileFilter#accept( File ) 833 */ 834 public boolean accept( final File pathname ) { 835 return (pathname.isHidden() ^ !flg) ^ rvse ; 836 // isHidden() flg !flg rvse â‡?çµæžœ 837 // ====================================================== 838 // true(hidden) true false false â‡?true 鏿Š? 839 // true(hidden) false true false â‡?false 除å¤? 840 // false(normal) true false false â‡?false 除å¤? 841 // false(normal) false true false â‡?true 鏿Š? 842 843 // true(hidden) true false true â‡?false 除å¤? 844 // true(hidden) false true true â‡?true 鏿Š? 845 // false(normal) true false true â‡?true 鏿Š? 846 // false(normal) false true true â‡?false 除å¤? 847 } 848 } 849 850 /** 851 * ã“ã?オブジェクトã?æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 852 * 基本çš?«ãƒ?ƒãƒ?‚°ç›®çš?«ä½¿ç”¨ã—ã¾ã™ã? 853 * 854 * @return ã“ã?ã‚¯ãƒ©ã‚¹ã®æ–?—å?è¡¨ç¾ 855 */ 856 @Override 857 public String toString() { 858 StringBuilder buf = new StringBuilder(); 859 int size = list.size(); 860 for( int i=0; i<size; i++ ) { 861 buf.append( "no[" ).append( i ).append( "]=" ); 862 buf.append( list.get(i) ).append( "\n" ); 863 } 864 865 return buf.toString(); 866 } 867 } 868 869 /** 870 * ModifyFileFilter.java ã¯ã€æœ€çµ‚変更日付ã‘ã®ãƒ•ィルタークラスã§ã™ã? 871 * 872 * FileFilter インターフェースを継承ã—ã?ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã§æŒ?®šã?日付ã‘よりã‚? 873 * æœ?µ‚å¤‰æ›´æ—¥ä»˜ã‘ ãŒæ–°ã—ã„ファイルをã?é¸æŠžã—ã¾ã™ã? 874 * ã“ã?クラスã§ã¯ã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã€å¤‰æ›´æ—¥ä»˜ã‘ã«ç„¡é–¢ä¿‚ã«é¸æŠžã—ã¾ã™ã? 875 * 876 * 日付ã‘ã®æŒ?®šã«ã€YYYYMMDD å½¢å¼ã? ?˜æ–‡å—æ•°å—æ–‡å—å?以外ã«ã€TODAY ã‚?YESTERDAY ãªã©ã‚‚使用ã§ãã¾ã™ã? 877 * TODAY ã¯ã€å®Ÿè¡Œæ—¥ã® 00:00:00 を基準時刻ã¨ã—ã?YESTERDAY ã¯ã€ãã®å‰æ—¥ã«ãªã‚Šã¾ã™ã? 878 * ãƒãƒƒãƒå?ç?‰ã§ã€å‰æ—¥åˆ??å†ç·¨æˆã‚„ã€å?月å?ã‚’å?ç·¨æˆã™ã‚‹å?åˆã«ã€å®Ÿæ—¥ä»˜ã‘を指定ã›ãšã« 879 * 使用ã§ãã¾ã™ã? 880 * 881 * ã“ã?実è£??åŒæœŸåŒ–ã•れã¾ã›ã‚“ã€? 882 * 883 * @version 4.0 884 * @author Kazuhiko Hasegawa 885 * @since JDK5.0, 886 */ 887 class ModifyFileFilter implements FileFilter { 888 private final long modify ; 889 890 /** 891 * コンストラクター 892 * 893 * 日付ã‘ã®æŒ?®šæ–¹æ³•ã«ã¯ã€å®Ÿæ—¥ä»˜ã‘(YYYYMMDDå½¢å¼?例ï¼?0040323)㨠894 * 仮想日付ã‘(TODAY,YESTERDAY ãªã©)ãŒæŒ‡å®šã§ãã¾ã™ã? 895 * 896 * YYYYMMDD YYYYMMDDå½¢å¼ã?æŒ?®šæ—¥ã® 00:00:00 を基準時刻 897 * TODAY 実行日㮠00:00:00 を基準時刻 898 * YESTERDAY å®Ÿè¡Œæ—¥å‰æ—¥ã® 00:00:00 を基準時刻 899 * LAST_WEEK 実行日ã®å…ˆé?(7æ—¥å‰? 00:00:00 を基準時刻 900 * MONTH 実行月㮠1æ—¥ 00:00:00 を基準時刻 901 * LAST_MONTH å®Ÿè¡Œå‰æœˆã? åŒæ—¥ 00:00:00 を基準時刻 902 * LAST_YEAR 実行å‰å¹´ã® åŒæœˆåŒæ—¥ 00:00:00 を基準時刻 903 * 904 * @og.rev 5.3.5.0 (2011/05/01) ?¢æ™‚ï½£ã®ã‚¯ãƒªã‚¢ãƒŸã‚¹ã®ä¿®æ£ 905 * 906 * @param value æŒ?®šæ—¥ä»˜ã‘ 907 */ 908 public ModifyFileFilter( final String value ) { 909 if( value != null ) { 910 Calendar cal = Calendar.getInstance(); 911 912 // cal.clear( Calendar.HOUR_OF_DAY ); 913 cal.set( Calendar.HOUR_OF_DAY, 0 ); // 5.3.5.0 (2011/05/01) 時間ã®è§£æ±ºè¦å‰‡ãŒé©ç”¨ã•れるãŸã‚ã??¢æ™‚ï½£ã?‘ã¯ã€setメソãƒ?ƒ‰ã§ 0 ã«ã‚»ãƒ?ƒˆã™ã‚‹ã€? 914 cal.clear( Calendar.MINUTE ); 915 cal.clear( Calendar.SECOND ); 916 cal.clear( Calendar.MILLISECOND ); 917 918 if( value.equalsIgnoreCase( "YESTERDAY" ) ) { 919 cal.add( Calendar.DATE, -1 ); 920 } 921 else if( value.equalsIgnoreCase( "LAST_WEEK" ) ) { 922 cal.add( Calendar.DATE, -7 ); 923 } 924 else if( value.equalsIgnoreCase( "MONTH" ) ) { 925 cal.set( Calendar.DATE, 1 ); 926 } 927 else if( value.equalsIgnoreCase( "LAST_MONTH" ) ) { 928 cal.add( Calendar.MONTH, -1 ); 929 } 930 else if( value.equalsIgnoreCase( "LAST_YEAR" ) ) { 931 cal.add( Calendar.YEAR, -1 ); 932 } 933 else if( value.length() == 8 ) { 934 cal.set( Integer.parseInt( value.substring( 0,4 ) ) , 935 Integer.parseInt( value.substring( 4,6 ) ) - 1, 936 Integer.parseInt( value.substring( 6,8 ) ) ); 937 } 938 else if( ! value.equalsIgnoreCase( "TODAY" ) ) { 939 String errMsg = "ModifyFileFilter Error! modify Format [" + value + "]\n" 940 + "日付ã‘ã®æŒ?®šæ–¹æ³•ã«ã¯ã€å®Ÿæ—¥ä»˜ã‘(YYYYMMDDå½¢å¼?例ï¼?0040323)㨠\n" 941 + "仮想日付ã‘(TODAY,YESTERDAY ãªã©)ãŒæŒ‡å®šã§ãã¾ã™ã?\n" 942 + " YYYYMMDD YYYYMMDDå½¢å¼ã?æŒ?®šæ—¥ã® 00:00:00 を基準時刻 \n" 943 + " TODAY 実行日㮠00:00:00 を基準時刻 \n" 944 + " YESTERDAY å®Ÿè¡Œæ—¥å‰æ—¥ã® 00:00:00 を基準時刻 \n" 945 + " LAST_WEEK 実行日ã®å…ˆé?(7æ—¥å‰? 00:00:00 を基準時刻 \n" 946 + " MONTH 実行月㮠1æ—¥ 00:00:00 を基準時刻 \n" 947 + " LAST_MONTH å®Ÿè¡Œå‰æœˆã? åŒæ—¥ 00:00:00 を基準時刻 \n" 948 + " LAST_YEAR 実行å‰å¹´ã® åŒæœˆåŒæ—¥ 00:00:00 を基準時刻 \n" ; 949 throw new RuntimeException( errMsg ); 950 } 951 modify = cal.getTimeInMillis() ; 952 } 953 else { 954 throw new RuntimeException( "ModifyFileFilter Error! modify valus is not null" ); 955 } 956 } 957 958 /** 959 * FileFilter インターフェース㮠accept( File ) メソãƒ?ƒ‰ 960 * 961 * @param file ファイルオブジェクãƒ? 962 * 963 * @return true:処ç?¯¾è±¡ / false:処ç?žå¯¾è±¡ 964 * @see java.io.FileFilter#accept( File ) 965 */ 966 public boolean accept( final File file ) { 967 return file.isDirectory() || ( file.lastModified() >= modify ) ; 968 } 969 }