Package org.jmule.core.utils

Source Code of org.jmule.core.utils.FileUtils

/*
*  JMule - Java file sharing client
*  Copyright (C) 2007-2008 JMule team ( jmule@jmule.org / http://jmule.org )
*
*  Any parts of this program derived from other projects, or contributed
*  by third-party developers are copyrighted by their respective authors.
*
*  This program is free software; you can redistribute it and/or
*  modify it under the terms of the GNU General Public License
*  as published by the Free Software Foundation; either version 2
*  of the License, or (at your option) any later version.
*
*  This program is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*
*/
package org.jmule.core.utils;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.logging.Logger;

/**
*
* @author javajox
* @version $$Revision: 1.3 $$
* Last changed by $$Author: javajox $$ on $$Date: 2009/07/05 08:02:02 $$
*/
public class FileUtils {

  private Logger log = Logger.getLogger(FileUtils.class.toString());
 
   /**
     * Checks, whether the child directory is a subdirectory of the base directory.
     *
     * @param base the base directory.
     * @param child the suspected child directory.
     * @return true, if the child is a subdirectory of the base directory.
     * @throws IOException if an IOError occured during the test.
     */
    public static boolean isSubDirectory(File base, File child)
        throws IOException {
        base = base.getCanonicalFile();
        child = child.getCanonicalFile();

        File parentFile = child;
        while (parentFile != null) {
            if (base.equals(parentFile)) {
                return true;
            }
            parentFile = parentFile.getParentFile();
        }
        return false;
    }
   
    public static List<File> extractNewFolders(File[] current_chosen_folders, List<File> chosen_folders,List<File> mustAddFolders) {
      List<File> already_existed_folders = new LinkedList<File>();
      for(File f1 : current_chosen_folders) {
      boolean must_be_added = true;
      for(File f2 : chosen_folders) {
        try
          if(FileUtils.isSubDirectory(f2, f1)) {
            must_be_added = false;
            break;
               // we remove the folders from chosen_folders if the current
               // chosen folder is the parent of some of the folders from chosen_folders
          } else if( f1 != f2 && FileUtils.isSubDirectory(f1, f2) ) {
            chosen_folders.remove(f2);
            already_existed_folders.add( f2 );
          }
        } catch(Throwable t) { t.printStackTrace(); }
      }
      if( must_be_added ) mustAddFolders.add( f1 );
      else already_existed_folders.add( f1 );
    }
      return already_existed_folders;
    }
   
    /**
     *
     * @param dir
     * @return a list of files
     */
    public static List<File> traverseDirAndReturnListOfFiles(File dir) {
      List<File> result_as_list = new ArrayList<File>();
      Queue<File> list_of_dirs = new LinkedList<File>();
      File[] list_of_files;
      File current_dir;
     
      list_of_dirs.offer( dir );
      while( list_of_dirs.size() != 0 ) {
        current_dir = list_of_dirs.poll();
        list_of_files = current_dir.listFiles();
        for(File file : list_of_files) {
          if( file.isDirectory() ) list_of_dirs.offer( file );
          else result_as_list.add( file );
        }
      }
     
      return result_as_list;     
    }
 
}
TOP

Related Classes of org.jmule.core.utils.FileUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.