Android Folder File List getAllFilesAndFolders(File root, boolean containEmpty)

Here you can find the source of getAllFilesAndFolders(File root, boolean containEmpty)

Description

Get all files and directories under the specified fold.

License

Apache License

Parameter

Parameter Description
root a parameter

Declaration

public static List<File> getAllFilesAndFolders(File root,
        boolean containEmpty) 

Method Source Code

/**//  www .  j av  a2  s .c om
 *  Copyright 2009 Welocalize, Inc. 
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  
 *  You may obtain a copy of the License at 
 *  http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *  
 */

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;

public class Main{
    /**
     * Get all files and directories under the specified fold.
     * 
     * @param root
     * @return
     */
    public static List<File> getAllFilesAndFolders(File root,
            boolean containEmpty) {
        Assert.assertFileExist(root);

        List<File> files = new ArrayList<File>();

        if (containEmpty || (!containEmpty && !isEmpty(root))) {
            files.add(root);
        }

        if (root.isDirectory()) {
            File[] fs = root.listFiles();
            for (File f : fs) {
                if (containEmpty || (!containEmpty && !isEmpty(f))) {
                    files.addAll(getAllFilesAndFolders(f, containEmpty));
                }
            }
        }

        return files;
    }
    /**
     * Check whether a directory is empty
     * 
     * @param f
     * @return
     */
    public static boolean isEmpty(File f) {
        boolean empty = true;

        if (f.isFile()) {
            return false;
        }
        File[] files = f.listFiles();
        for (File file : files) {
            if (!empty) {
                break;
            } else {
                if (file.isDirectory()) {
                    empty = isEmpty(file);
                } else {
                    empty = false;
                }
            }
        }
        return empty;
    }
}

Related

  1. ListFiles(File dir, FilenameFilter filter)
  2. getFileNames(String dirPath)
  3. getFileNames(String dirPath, FilenameFilter fileNameFilter)
  4. getFiles(File dir, List outList)
  5. listFiles(String fileName)