001: /*
002: * CoadunationLib: The coaduntion implementation library.
003: * Copyright (C) 2006 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * FileUtil.java
020: *
021: * This class is responsible for supplying simple file utilities
022: */
023:
024: // package path
025: package com.rift.coad.lib.common;
026:
027: // java imports
028: import java.io.File;
029: import java.io.FileInputStream;
030: import java.io.FileOutputStream;
031: import java.util.Vector;
032:
033: /**
034: * This class is responsible for supplying simple file utilities
035: *
036: * @author Brett Chaldecott
037: */
038: public class FileUtil {
039:
040: /**
041: * A private constructor to prevent instanciation of this object.
042: */
043: private FileUtil() {
044: }
045:
046: /**
047: * This method filters the file list and returns a list of containing only
048: * jar files.
049: *
050: * @return The filtered list of files.
051: * @param files The unfiltered list of files.
052: * @param suffix The suffix to filter the file list on.
053: */
054: public static File[] filter(File[] files, String suffix) {
055: Vector filteredFiles = new Vector();
056: for (int index = 0; index < files.length; index++) {
057: File file = files[index];
058: if (file.isFile() != true) {
059: continue;
060: }
061: String path = file.getPath();
062: if ((path.length() > 3)
063: && (path.substring(path.length() - suffix.length())
064: .equals(suffix))) {
065: filteredFiles.add(file);
066: }
067: }
068: File[] newFileList = new File[filteredFiles.size()];
069: return (File[]) filteredFiles.toArray(newFileList);
070: }
071:
072: /**
073: * This method copies a file from the source to the target.
074: *
075: * @param source The source file to copy.
076: * @param target The target the file must be copied to.
077: * @exception CommonException
078: */
079: public static void copyFile(File source, File target)
080: throws CommonException {
081: try {
082: FileInputStream in = new FileInputStream(source);
083: FileOutputStream out = new FileOutputStream(target);
084: int bytes = 0;
085: byte[] buf = new byte[1024];
086: while ((bytes = in.read(buf)) != -1) {
087: out.write(buf, 0, bytes);
088: }
089: in.close();
090: out.close();
091: } catch (Exception ex) {
092: throw new CommonException(
093: "Failed to copy the file to the target : "
094: + ex.getMessage(), ex);
095: }
096: }
097:
098: /**
099: * This method deletes the target recursively
100: *
101: * @param target The target to delete.
102: * @exception CommonException
103: */
104: public static void delTargetRecursive(File target)
105: throws CommonException {
106: try {
107: File[] files = target.listFiles();
108: for (int index = 0; (files != null)
109: && (index < files.length); index++) {
110: if (files[index].isDirectory()) {
111: delTargetRecursive(files[index]);
112: } else {
113: files[index].delete();
114: }
115: }
116: target.delete();
117: } catch (Exception ex) {
118: throw new CommonException(
119: "Failed to delete the target recursively :"
120: + ex.getMessage(), ex);
121: }
122: }
123: }
|