Hi Michelle,
Take a look at this.
Craig
/**
* This function will copy files or directories from one location to
another.
* note that the source and the destination must be mutually
exclusive. This
* function can not be used to copy a directory to a sub directory of
itself.
* The function will also have problems if the destination files
already exist.
* @param src -- A File object that represents the source for the copy
* @param dest -- A File object that represnts the destination for
the copy.
* @throws IOException if unable to copy.
*/
public static void copyFiles(File src, File dest) throws IOException {
//Check to ensure that the source is valid...
if (!src.exists()) {
throw new IOException("copyFiles: Can not find source: " +
src.getAbsolutePath()+".");
} else if (!src.canRead()) { //check to ensure we have rights to the
source...
throw new IOException("copyFiles: No right to source: " +
src.getAbsolutePath()+".");
}
//is this a directory copy?
if (src.isDirectory()) {
if (!dest.exists()) { //does the destination already exist?
//if not we need to make it exist if possible (note this is mkdirs
not mkdir)
if (!dest.mkdirs()) {
throw new IOException("copyFiles: Could not create direcotry: " +
dest.getAbsolutePath() + ".");
}
}
//get a listing of files...
String list[] = src.list();
//copy all the files in the list.
for (int i = 0; i < list.length; i++)
{
File dest1 = new File(dest, list[i]);
File src1 = new File(src, list[i]);
copyFiles(src1 , dest1);
}
} else {
//This was not a directory, so lets just copy the file
FileInputStream fin = null;
FileOutputStream fout = null;
byte[] buffer = new byte[4096]; //Buffer 4K at a time (you can
change this).
int bytesRead;
try {
//open the files for input and output
fin = new FileInputStream(src);
fout = new FileOutputStream (dest);
//while bytesRead indicates a successful read, lets
write...
while ((bytesRead = fin.read(buffer)) >= 0) {
fout.write(buffer,0,bytesRead);
}
} catch (IOException e) { //Error copying file...
IOException wrapper = new IOException("copyFiles: Unable to copy
file: " +
src.getAbsolutePath() + "to" +
dest.getAbsolutePath()+".");
wrapper.initCause(e);
wrapper.setStackTrace(e.getStackTrace());
throw wrapper;
} finally { //Ensure that the files are closed (if they were
open).
if (fin != null) { fin.close(); }
if (fout != null) { fout.close(); }
}
}
}
Craig L Russell
Architect, Oracle
http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!