1 4 package org.oddjob.io; 5 6 import java.io.File ; 7 import java.io.IOException ; 8 import java.io.Serializable ; 9 10 import org.apache.commons.io.FileUtils; 11 import org.apache.log4j.Logger; 12 13 14 27 public class DeleteJob implements Runnable , Serializable { 28 private static final long serialVersionUID = 20060117; 29 30 private static final Logger logger = Logger.getLogger(DeleteJob.class); 31 32 37 private String name; 38 39 45 private File [] files; 46 47 52 private boolean force; 53 54 59 public String getName() { 60 return name; 61 } 62 63 68 public void setName(String name) { 69 this.name = name; 70 } 71 72 77 public File [] getFiles() { 78 return files; 79 } 80 81 86 public void setFiles(File [] files) { 87 this.files = files; 88 } 89 90 95 public boolean getForce() { 96 return force; 97 } 98 99 104 public void setForce(boolean force) { 105 this.force = force; 106 } 107 108 112 public void run() { 113 if (files == null) { 114 throw new IllegalStateException ("Files must be specified."); 115 } 116 File [] toDelete = Files.expand(files); 117 Files.verifyWrite(toDelete); 118 119 int fileCount = 0; 120 int dirCount = 0; 121 for (int i = 0; i < toDelete.length; ++i) { 122 if (toDelete[i].isDirectory()) { 123 ++dirCount; 124 } 125 else { 126 ++fileCount; 127 } 128 if (force) { 129 try { 130 FileUtils.forceDelete(toDelete[i]); 131 } catch (IOException e) { 132 throw new RuntimeException (e); 133 } 134 } 135 else { 136 if (!toDelete[i].delete()) { 137 throw new RuntimeException ("Failed to delete " + toDelete[i]); 138 } 139 } 140 logger.debug("Deleted " + toDelete[i]); 141 } 142 logger.info("Deleted " + fileCount + " files, " 143 + dirCount + " directories."); 144 } 145 146 150 public String toString() { 151 if (name == null) { 152 return "Delete Files and Directories"; 153 } 154 else { 155 return name; 156 } 157 } 158 } 159 | Popular Tags |