Updated delete to correctly do name + full path matching, also to normalize the file names
This commit is contained in:
parent
bffa46cd27
commit
660df53f23
@ -457,6 +457,7 @@ class FileUtil {
|
|||||||
* Deletes a file or directory and all files and sub-directories under it.
|
* Deletes a file or directory and all files and sub-directories under it.
|
||||||
*
|
*
|
||||||
* @param fileNamesToIgnore if prefaced with a '/', it will ignore as a directory instead of file
|
* @param fileNamesToIgnore if prefaced with a '/', it will ignore as a directory instead of file
|
||||||
|
* @return true iff the file/dir was deleted
|
||||||
*/
|
*/
|
||||||
public static
|
public static
|
||||||
boolean delete(String fileName, String... fileNamesToIgnore) {
|
boolean delete(String fileName, String... fileNamesToIgnore) {
|
||||||
@ -471,11 +472,12 @@ class FileUtil {
|
|||||||
* Deletes a file or directory and all files and sub-directories under it.
|
* Deletes a file or directory and all files and sub-directories under it.
|
||||||
*
|
*
|
||||||
* @param namesToIgnore if prefaced with a '/', it will ignore as a directory instead of file
|
* @param namesToIgnore if prefaced with a '/', it will ignore as a directory instead of file
|
||||||
|
* @return true iff the file/dir was deleted (or didn't exist)
|
||||||
*/
|
*/
|
||||||
public static
|
public static
|
||||||
boolean delete(File file, String... namesToIgnore) {
|
boolean delete(File file, String... namesToIgnore) {
|
||||||
if (!file.exists()) {
|
if (!file.exists()) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean ignored = false;
|
boolean ignored = false;
|
||||||
@ -486,13 +488,25 @@ class FileUtil {
|
|||||||
for (int i = 0, n = files.length; i < n; i++) {
|
for (int i = 0, n = files.length; i < n; i++) {
|
||||||
|
|
||||||
boolean delete = true;
|
boolean delete = true;
|
||||||
String name2 = files[i].getName();
|
final File file2 = files[i];
|
||||||
|
String name2 = file2.getName();
|
||||||
|
String name2Full = normalize(file2.getAbsolutePath());
|
||||||
|
|
||||||
if (files[i].isDirectory()) {
|
if (file2.isDirectory()) {
|
||||||
for (String name : namesToIgnore) {
|
for (String name : namesToIgnore) {
|
||||||
if (name.startsWith("/") && name.equals(name2)) {
|
if (name.startsWith("/") && name.equals(name2)) {
|
||||||
|
// only name match
|
||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
logger2.trace("Skipping delete dir: {}", files[i]);
|
logger2.trace("Skipping delete dir: {}", file2);
|
||||||
|
}
|
||||||
|
ignored = true;
|
||||||
|
delete = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (name.equals(name2Full)) {
|
||||||
|
// full path match
|
||||||
|
if (logger2.isTraceEnabled()) {
|
||||||
|
logger2.trace("Skipping delete dir: {}", file2);
|
||||||
}
|
}
|
||||||
ignored = true;
|
ignored = true;
|
||||||
delete = false;
|
delete = false;
|
||||||
@ -502,16 +516,26 @@ class FileUtil {
|
|||||||
|
|
||||||
if (delete) {
|
if (delete) {
|
||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
logger2.trace("Deleting dir: {}", files[i]);
|
logger2.trace("Deleting dir: {}", file2);
|
||||||
}
|
}
|
||||||
delete(files[i], namesToIgnore);
|
delete(file2, namesToIgnore);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (String name : namesToIgnore) {
|
for (String name : namesToIgnore) {
|
||||||
if (!name.startsWith("/") && name.equals(name2)) {
|
if (!name.startsWith("/") && name.equals(name2)) {
|
||||||
|
// only name match
|
||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
logger2.trace("Skipping delete file: {}", files[i]);
|
logger2.trace("Skipping delete file: {}", file2);
|
||||||
|
}
|
||||||
|
ignored = true;
|
||||||
|
delete = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (name.equals(name2Full)) {
|
||||||
|
// full path match
|
||||||
|
if (logger2.isTraceEnabled()) {
|
||||||
|
logger2.trace("Skipping delete file: {}", file2);
|
||||||
}
|
}
|
||||||
ignored = true;
|
ignored = true;
|
||||||
delete = false;
|
delete = false;
|
||||||
@ -521,9 +545,9 @@ class FileUtil {
|
|||||||
|
|
||||||
if (delete) {
|
if (delete) {
|
||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
logger2.trace("Deleting file: {}", files[i]);
|
logger2.trace("Deleting file: {}", file2);
|
||||||
}
|
}
|
||||||
files[i].delete();
|
file2.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -535,7 +559,7 @@ class FileUtil {
|
|||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
logger2.trace("Skipping deleting file: {}", file);
|
logger2.trace("Skipping deleting file: {}", file);
|
||||||
}
|
}
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
@ -555,7 +579,7 @@ class FileUtil {
|
|||||||
throw new IllegalArgumentException("fileDir cannot be null.");
|
throw new IllegalArgumentException("fileDir cannot be null.");
|
||||||
}
|
}
|
||||||
|
|
||||||
String path = location.getAbsolutePath();
|
String path = normalize(location).getAbsolutePath();
|
||||||
if (location.mkdirs()) {
|
if (location.mkdirs()) {
|
||||||
Logger logger2 = logger;
|
Logger logger2 = logger;
|
||||||
if (logger2.isTraceEnabled()) {
|
if (logger2.isTraceEnabled()) {
|
||||||
@ -588,7 +612,7 @@ class FileUtil {
|
|||||||
throw new IllegalArgumentException("fileName cannot be null");
|
throw new IllegalArgumentException("fileName cannot be null");
|
||||||
}
|
}
|
||||||
|
|
||||||
return File.createTempFile(fileName, null).getAbsoluteFile();
|
return normalize(File.createTempFile(fileName, null)).getAbsoluteFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -609,7 +633,7 @@ class FileUtil {
|
|||||||
throw new IOException("Unable to create temp directory: " + file);
|
throw new IOException("Unable to create temp directory: " + file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return file.getAbsolutePath();
|
return normalize(file).getAbsolutePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user