Browse Source

Add IGNORE_ERRORS to FileUtils.delete()

There are a few situations where you want to delete files or folders but
where you are not interested in getting exceptions if this doesn't
succeed. E.g. if you delete garbage in the GC class you want that if
certain files can't be deleted the command succeeds. Maybe the next
garbage collector run has more luck not to interfere with a virus
scanner run on Windows. Therefore an option is added to
FileUtils.delete() not to report errors in such cases.

Change-Id: I58994d8c481e591dcbb0f2be7dfa562e125f0f08
Signed-off-by: Christian Halstrick <christian.halstrick@sap.com>
tags/v2.0.0.201206130900-r
Christian Halstrick 12 years ago
parent
commit
b6d376a177
1 changed files with 10 additions and 3 deletions
  1. 10
    3
      org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java

+ 10
- 3
org.eclipse.jgit/src/org/eclipse/jgit/util/FileUtils.java View File

@@ -77,6 +77,11 @@ public class FileUtils {
*/
public static final int SKIP_MISSING = 4;

/**
* Option not to throw exceptions when a deletion finally doesn't succeed.
*/
public static final int IGNORE_ERRORS = 8;

/**
* Delete file or empty folder
*
@@ -106,7 +111,8 @@ public class FileUtils {
* if deletion of {@code f} fails. This may occur if {@code f}
* didn't exist when the method was called. This can therefore
* cause IOExceptions during race conditions when multiple
* concurrent threads all try to delete the same file.
* concurrent threads all try to delete the same file. This
* exception is not thrown when IGNORE_ERRORS is set.
*/
public static void delete(final File f, int options) throws IOException {
if ((options & SKIP_MISSING) != 0 && !f.exists())
@@ -131,8 +137,9 @@ public class FileUtils {
return;
}
}
throw new IOException(MessageFormat.format(
JGitText.get().deleteFileFailed, f.getAbsolutePath()));
if ((options & IGNORE_ERRORS) == 0)
throw new IOException(MessageFormat.format(
JGitText.get().deleteFileFailed, f.getAbsolutePath()));
}
}


Loading…
Cancel
Save