You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ji...@apache.org on 2016/02/24 00:24:18 UTC
incubator-geode git commit: GEODE-912: FileUtil would throw a more
detailed stack trace if unable to delete a file
Repository: incubator-geode
Updated Branches:
refs/heads/develop 9e8543ab2 -> 7815581ee
GEODE-912: FileUtil would throw a more detailed stack trace if unable to delete a file
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/7815581e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/7815581e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/7815581e
Branch: refs/heads/develop
Commit: 7815581ee28450c5ae7b084d8e45e923bf0da0a1
Parents: 9e8543a
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Tue Feb 23 11:48:34 2016 -0800
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Tue Feb 23 15:23:52 2016 -0800
----------------------------------------------------------------------
.../com/gemstone/gemfire/internal/FileUtil.java | 29 ++++++++++++++------
.../gemfire/internal/FileUtilJUnitTest.java | 20 ++++++++++++++
2 files changed, 40 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7815581e/geode-core/src/main/java/com/gemstone/gemfire/internal/FileUtil.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/FileUtil.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/FileUtil.java
index b06b503..c87e950 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/FileUtil.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/FileUtil.java
@@ -25,6 +25,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.nio.channels.FileChannel;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
@@ -156,15 +157,16 @@ public class FileUtil {
* which just returns false.
*/
public static void delete(File file) throws IOException {
- if(file.exists() && file.isDirectory()) {
+ if(!file.exists())
+ return;
+
+ if(file.isDirectory()) {
for(File child: listFiles(file)) {
delete(child);
}
}
-
- if(file.exists() && !file.delete()) {
- throw new IOException("Could not delete " + file);
- }
+
+ Files.delete(file.toPath());
}
/**
@@ -175,15 +177,24 @@ public class FileUtil {
* This method tries to delete as much as possible.
*/
public static void delete(File file, StringBuilder failures) {
- if(file.exists() && file.isDirectory()) {
+ if(!file.exists())
+ return;
+
+ if(file.isDirectory()) {
for(File child: listFiles(file)) {
delete(child, failures);
}
}
-
- if(file.exists() && !file.delete()) {
+
+ try{
+ Files.delete(file.toPath());
+ } catch (IOException e) {
if (failures != null) {
- failures.append("Could not delete ").append(file).append('\n');
+ failures.append("Could not delete ")
+ .append(file)
+ .append(" due to ")
+ .append(e.getMessage())
+ .append('\n');
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/7815581e/geode-core/src/test/java/com/gemstone/gemfire/internal/FileUtilJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/FileUtilJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/FileUtilJUnitTest.java
index 2c9b0c8..d3a4ebd 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/FileUtilJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/FileUtilJUnitTest.java
@@ -84,4 +84,24 @@ public class FileUtilJUnitTest {
fileName = "/dir/dir/dir/dir/filename.txt.log";
assertEquals("/dir/dir/dir/dir/filename.txt", FileUtil.stripOffExtension(fileName));
}
+
+ @Test
+ public void testDeleteFile() throws IOException {
+ File file = File.createTempFile("FileUtilJUnitTest", null);
+ assertTrue(file.exists());
+ FileUtil.delete(file);
+ assertFalse(file.exists());
+ }
+
+ @Test
+ public void testDeleteDir() throws IOException {
+ File dir = new File("testDirName");
+ dir.mkdir();
+ File file = File.createTempFile("testFile", null, dir);
+ assertTrue(dir.exists());
+ assertTrue(file.exists());
+ FileUtil.delete(dir);
+ assertFalse(file.exists());
+ assertFalse(dir.exists());
+ }
}