4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.FilenameFilter;
11 public class FileFunctions {
12 protected static final int FILE_COPY_BUFFER_SIZE = 65536;
14 private FileFunctions() {
17 public static void copyFile(File aSourceFile, File aDestinationFile) throws IOException {
18 FileInputStream inputStream;
19 FileOutputStream outputStream;
21 byte[] buffer = new byte[FILE_COPY_BUFFER_SIZE];
23 inputStream = new FileInputStream(aSourceFile);
25 File directory = new File(aDestinationFile.getParent());
26 if (directory!=null && !directory.exists()){
29 outputStream = new FileOutputStream(aDestinationFile);
32 nrBytesRead = inputStream.read(buffer);
34 outputStream.write(buffer, 0, nrBytesRead);
36 while (nrBytesRead>=0);
47 public static void copyDirectory(File aSourceDirectory, File aDestinationDirectory) throws IOException {
51 File[] files = aSourceDirectory.listFiles();
53 if (!aDestinationDirectory.exists())
54 aDestinationDirectory.mkdirs();
56 for (i=0; i<files.length; i++) {
57 sourceFile = files[i];
58 destinationFile=new File(aDestinationDirectory, sourceFile.getName());
59 if (sourceFile.isDirectory()) {
60 if (!destinationFile.exists())
61 destinationFile.mkdir();
62 copyDirectory(sourceFile, destinationFile);
65 copyFile(sourceFile, destinationFile);
70 public static void copy(File aSource, File aDestination) throws IOException {
71 if (aSource.isDirectory()) {
72 copyDirectory(aSource, aDestination);
74 else if (aDestination.isDirectory()) {
75 copyFile(aSource, new File(aDestination, aSource.getName()));
78 copyFile(aSource, aDestination);
82 public static class RegExpFileFilter implements FilenameFilter {
83 private RE expression;
85 public RegExpFileFilter(String anExpression) {
87 expression = new RE(anExpression);
90 throw new RuntimeException(t.getMessage());
94 public boolean accept(File aDir, String aName) {
95 return expression.isMatch(aName) && !new File(aDir, aName).isDirectory();
99 public static class DirectoryFilter implements FilenameFilter {
100 public DirectoryFilter() {
103 public boolean accept(File aDir, String aName) {
104 return new File(aDir, aName).isDirectory();