 |
返回原文..
Benoit Marchal (
bmarchal@pineapplesoft.com)
Consultant, Pineapplesoft
August 2001
Listing 6. DirectoryWalker redux
protected void walk(File source,File target,int depth)
throws IOException, XMException
{
if(source.isDirectory())
{
// File rulesFile = new File(source,Constants.rulesFilename);
File[] files = source.listFiles(),
dirs = new File[files.length],
docs = new File[files.length];
int idirs = 0,
idocs = 0;
for(int i = 0;i < files.length;i++)
{
if(files[i].isDirectory())
dirs[idirs++] = files[i];
else if(files[i].isFile())
docs[idocs++] = files[i];
else
throw new NotImplementedException("Expecting file or directory");
}
if(!(target.exists() && target.isDirectory()))
if(!target.mkdirs())
messenger.fatal(new XMException(
Resources.getString("cannotcreatedirectory"),
new Object[] {target.getAbsolutePath()}));
for(int i = 0;i < idocs;i++)
{
Mover mover = supervisor.getMover(docs[i]);
File result = mover.move(docs[i],target,depth);
messenger.progress(docs[i],result);
}
for(int i = 0;i < idirs;i++)
walk(dirs[i],new File(target,dirs[i].getName()),depth + 1);
}
else
messenger.fatal(new XMException(Resources.getString("notdirectory"),
new Object[] {source.getAbsolutePath()}));
} |
返回原文.
|  |
|