1 6 21 22 package de.schlichtherle.io; 23 24 import de.schlichtherle.io.archive.Archive; 25 import de.schlichtherle.io.archive.spi.ArchiveDriver; 26 import de.schlichtherle.io.archive.spi.ArchiveEntry; 27 28 import java.io.FileFilter ; 29 import java.io.FilenameFilter ; 30 import java.util.ArrayList ; 31 import java.util.HashSet ; 32 import java.util.Iterator ; 33 import java.util.List ; 34 import java.util.Set ; 35 36 import javax.swing.Icon ; 37 38 50 public class ArchiveEntryMetaData { 51 52 56 private static final ThreadLocal threadLocal = new ThreadLocal () { 57 protected Object initialValue() { 58 return new ArrayList (64); 59 } 60 }; 61 62 68 final Set children; 69 70 74 ArchiveEntryMetaData(final ArchiveEntry entry) { 75 this.children = entry.isDirectory() ? new HashSet () : null; 76 } 77 78 86 String [] list() { 87 final String [] list = new String [children.size()]; 88 children.toArray(list); 89 90 return list; 91 } 92 93 105 String [] list( 106 final FilenameFilter filenameFilter, 107 final File dir) { 108 final List filteredList = (List ) threadLocal.get(); 109 assert filteredList.isEmpty(); 110 try { 111 for (final Iterator i = children.iterator(); i.hasNext(); ) { 112 final String child = (String ) i.next(); 113 if (filenameFilter.accept(dir, child)) 114 filteredList.add(child); 115 } 116 final String [] list = new String [filteredList.size()]; 117 filteredList.toArray(list); 118 119 return list; 120 } finally { 121 filteredList.clear(); } 123 } 124 125 138 File[] listFiles( 139 FilenameFilter filenameFilter, 140 final File dir, 141 final FileFactory factory) { 142 final List filteredList = (List ) threadLocal.get(); 143 assert filteredList.isEmpty(); 144 try { 145 for (final Iterator i = children.iterator(); i.hasNext(); ) { 146 final String child = (String ) i.next(); 147 if (filenameFilter == null 148 || filenameFilter.accept(dir, child)) 149 filteredList.add(factory.createFile(dir, child)); 150 } 151 final File[] list = new File[filteredList.size()]; 152 filteredList.toArray(list); 153 154 return list; 155 } finally { 156 filteredList.clear(); } 158 } 159 160 173 File[] listFiles( 174 final FileFilter fileFilter, 175 final File dir, 176 final FileFactory factory) { 177 final List filteredList = (List ) threadLocal.get(); 178 assert filteredList.isEmpty(); 179 try { 180 for (final Iterator i = children.iterator(); i.hasNext(); ) { 181 final String child = (String ) i.next(); 182 final File file = factory.createFile(dir, child); 183 if (fileFilter == null || fileFilter.accept(file)) 184 filteredList.add(file); 185 } 186 final File[] list = new File[filteredList.size()]; 187 filteredList.toArray(list); 188 189 return list; 190 } finally { 191 filteredList.clear(); } 193 } 194 } 195 | Popular Tags |