14ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/* 24ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Licensed to the Apache Software Foundation (ASF) under one or more 34ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * contributor license agreements. See the NOTICE file distributed with 44ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * this work for additional information regarding copyright ownership. 54ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * The ASF licenses this file to You under the Apache License, Version 2.0 64ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * (the "License"); you may not use this file except in compliance with 74ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * the License. You may obtain a copy of the License at 84ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 94ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * http://www.apache.org/licenses/LICENSE-2.0 104ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 114ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Unless required by applicable law or agreed to in writing, software 124ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * distributed under the License is distributed on an "AS IS" BASIS, 134ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 144ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * See the License for the specific language governing permissions and 154ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * limitations under the License. 164ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 174ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapackage org.apache.commons.io.filefilter; 184ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 194ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.File; 204ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereiraimport java.io.Serializable; 214ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 224ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira/** 234ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * This filter accepts <code>File</code>s that can be read. 244ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <p> 254ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Example, showing how to print out a list of the 264ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * current directory's <i>readable</i> files: 274ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 284ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <pre> 294ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * File dir = new File("."); 304ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * String[] files = dir.list( CanReadFileFilter.CAN_READ ); 314ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * for ( int i = 0; i < files.length; i++ ) { 324ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * System.out.println(files[i]); 334ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * } 344ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * </pre> 354ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 364ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <p> 374ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Example, showing how to print out a list of the 384ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * current directory's <i>un-readable</i> files: 394ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 404ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <pre> 414ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * File dir = new File("."); 424ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * String[] files = dir.list( CanReadFileFilter.CANNOT_READ ); 434ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * for ( int i = 0; i < files.length; i++ ) { 444ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * System.out.println(files[i]); 454ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * } 464ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * </pre> 474ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 484ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <p> 494ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Example, showing how to print out a list of the 504ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * current directory's <i>read-only</i> files: 514ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 524ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * <pre> 534ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * File dir = new File("."); 544ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * String[] files = dir.list( CanReadFileFilter.READ_ONLY ); 554ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * for ( int i = 0; i < files.length; i++ ) { 564ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * System.out.println(files[i]); 574ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * } 584ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * </pre> 594ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 604ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @since Commons IO 1.3 614ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @version $Revision: 587916 $ 624ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 634ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereirapublic class CanReadFileFilter extends AbstractFileFilter implements Serializable { 644ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 654ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** Singleton instance of <i>readable</i> filter */ 664ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira public static final IOFileFilter CAN_READ = new CanReadFileFilter(); 674ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 684ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** Singleton instance of not <i>readable</i> filter */ 694ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira public static final IOFileFilter CANNOT_READ = new NotFileFilter(CAN_READ); 704ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 714ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** Singleton instance of <i>read-only</i> filter */ 724ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira public static final IOFileFilter READ_ONLY = new AndFileFilter(CAN_READ, 734ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira CanWriteFileFilter.CANNOT_WRITE); 744ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 754ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 764ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Restrictive consructor. 774ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 784ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira protected CanReadFileFilter() { 794ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 804ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 814ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira /** 824ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * Checks to see if the file can be read. 834ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * 844ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @param file the File to check. 854ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * @return <code>true</code> if the file can be 864ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira * read, otherwise <code>false</code>. 874ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira */ 884ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira public boolean accept(File file) { 894ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira return file.canRead(); 904ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira } 914ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira 924ebb916ddca5f59d4f854f104fca0de6e0dda706Mindy Pereira} 93