001 package com.croftsoft.core.util.filemap; 002 003 import java.io.*; 004 import java.util.*; 005 006 /********************************************************************* 007 * This Iterator is required for the AbstractMap implementation of 008 * FileMap. 009 * 010 * @see 011 * FileMap 012 * @see 013 * java.util.AbstractSet 014 * 015 * @version 016 * 1999-04-03 017 * @author 018 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 019 *********************************************************************/ 020 021 public class FileMapEntryIterator implements Iterator 022 ////////////////////////////////////////////////////////////////////// 023 ////////////////////////////////////////////////////////////////////// 024 { 025 026 private File rootDirectory; 027 028 private String [ ] files; 029 private int index = 0; 030 031 ////////////////////////////////////////////////////////////////////// 032 ////////////////////////////////////////////////////////////////////// 033 034 public FileMapEntryIterator ( File rootDirectory ) 035 ////////////////////////////////////////////////////////////////////// 036 { 037 this.rootDirectory = rootDirectory; 038 } 039 040 ////////////////////////////////////////////////////////////////////// 041 ////////////////////////////////////////////////////////////////////// 042 043 public synchronized boolean hasNext ( ) 044 ////////////////////////////////////////////////////////////////////// 045 { 046 if ( files == null ) files = rootDirectory.list ( ); 047 048 if ( files == null ) return false; 049 050 return ( index < files.length ); 051 } 052 053 public synchronized Object next ( ) 054 ////////////////////////////////////////////////////////////////////// 055 { 056 if ( files == null ) files = rootDirectory.list ( ); 057 058 if ( files == null ) return null; 059 060 if ( index >= files.length ) return null; 061 062 return new FileMapEntry ( rootDirectory, files [ index++ ] ); 063 } 064 065 public synchronized void remove ( ) 066 ////////////////////////////////////////////////////////////////////// 067 { 068 if ( files == null ) files = rootDirectory.list ( ); 069 070 if ( files == null ) return; 071 072 if ( index >= files.length ) return; 073 074 new File ( files [ index ] ).delete ( ); 075 } 076 077 ////////////////////////////////////////////////////////////////////// 078 ////////////////////////////////////////////////////////////////////// 079 }