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 &lt; 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 &lt; 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 &lt; 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