196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/*
296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * this work for additional information regarding copyright ownership.
596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * (the "License"); you may not use this file except in compliance with
796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * the License.  You may obtain a copy of the License at
896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and
1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License.
1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */
1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage org.apache.commons.io.filefilter;
1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
1996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport java.io.File;
2096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport java.io.Serializable;
2196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
2296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/**
2396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * This filter accepts <code>File</code>s that can be read.
2496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * <p>
2596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Example, showing how to print out a list of the
2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * current directory's <i>readable</i> files:
2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * <pre>
2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * File dir = new File(".");
3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * String[] files = dir.list( CanReadFileFilter.CAN_READ );
3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * for ( int i = 0; i &lt; files.length; i++ ) {
3296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *     System.out.println(files[i]);
3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * }
3496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * </pre>
3596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * <p>
3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Example, showing how to print out a list of the
3896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * current directory's <i>un-readable</i> files:
3996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * <pre>
4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * File dir = new File(".");
4296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * String[] files = dir.list( CanReadFileFilter.CANNOT_READ );
4396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * for ( int i = 0; i &lt; files.length; i++ ) {
4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *     System.out.println(files[i]);
4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * }
4696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * </pre>
4796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
4896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * <p>
4996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Example, showing how to print out a list of the
5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * current directory's <i>read-only</i> files:
5196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * <pre>
5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * File dir = new File(".");
5496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * String[] files = dir.list( CanReadFileFilter.READ_ONLY );
5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * for ( int i = 0; i &lt; files.length; i++ ) {
5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *     System.out.println(files[i]);
5796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * }
5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * </pre>
5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project *
6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * @since Commons IO 1.3
6196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * @version $Revision: 587916 $
6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */
6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class CanReadFileFilter extends AbstractFileFilter implements Serializable {
6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /** Singleton instance of <i>readable</i> filter */
6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public static final IOFileFilter CAN_READ = new CanReadFileFilter();
6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /** Singleton instance of not <i>readable</i> filter */
6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public static final IOFileFilter CANNOT_READ = new NotFileFilter(CAN_READ);
7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
7196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /** Singleton instance of <i>read-only</i> filter */
7296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public static final IOFileFilter READ_ONLY = new AndFileFilter(CAN_READ,
7396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                                                CanWriteFileFilter.CANNOT_WRITE);
7496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
7596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
7696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * Restrictive consructor.
7796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
7896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    protected CanReadFileFilter() {
7996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
8096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
8196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    /**
8296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * Checks to see if the file can be read.
8396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     *
8496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * @param file  the File to check.
8596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     * @return <code>true</code> if the file can be
8696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     *  read, otherwise <code>false</code>.
8796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project     */
8896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public boolean accept(File file) {
8996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        return file.canRead();
9096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
9196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
9296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
93