diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java index 8a9cd3a5997c..407dc9c7d807 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java @@ -254,7 +254,7 @@ public synchronized void serialize() throws IOException { } File src = fsFactory.getFile(file + RESOURCE_SUFFIX + TEMP_SUFFIX); File dest = fsFactory.getFile(file + RESOURCE_SUFFIX); - Files.deleteIfExists(dest.toPath()); + fsFactory.deleteIfExists(dest); fsFactory.moveFile(src, dest); } @@ -459,14 +459,13 @@ public void removeModFile() throws IOException { /** Remove the data file, its resource file, and its modification file physically. */ public void remove() { try { - Files.deleteIfExists(file.toPath()); + fsFactory.deleteIfExists(file); } catch (IOException e) { logger.error("TsFile {} cannot be deleted: {}", file, e.getMessage()); } removeResourceFile(); try { - Files.deleteIfExists( - fsFactory.getFile(file.getPath() + ModificationFile.FILE_SUFFIX).toPath()); + fsFactory.deleteIfExists(fsFactory.getFile(file.getPath() + ModificationFile.FILE_SUFFIX)); } catch (IOException e) { logger.error("ModificationFile {} cannot be deleted: {}", file, e.getMessage()); } @@ -474,7 +473,7 @@ public void remove() { public void removeResourceFile() { try { - Files.deleteIfExists(fsFactory.getFile(file.getPath() + RESOURCE_SUFFIX).toPath()); + fsFactory.deleteIfExists(fsFactory.getFile(file.getPath() + RESOURCE_SUFFIX)); } catch (IOException e) { logger.error("TsFileResource {} cannot be deleted: {}", file, e.getMessage()); } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java index fb9f2bbf3128..804e880090e5 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/FSFactory.java @@ -24,6 +24,7 @@ import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; +import java.io.IOException; import java.net.URI; public interface FSFactory { @@ -128,4 +129,11 @@ public interface FSFactory { * @return list of files */ File[] listFilesByPrefix(String fileFolder, String prefix); + + /** + * delete the file if it exists + * + * @param file local file or HDFS file + */ + boolean deleteIfExists(File file) throws IOException; } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java index d42277e0b398..b1197bffa1fd 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/HDFSFactory.java @@ -229,4 +229,9 @@ public File[] listFilesByPrefix(String fileFolder, String prefix) { return null; } } + + @Override + public boolean deleteIfExists(File file) { + return file.delete(); + } } diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java index 779b66e5851f..365ded1b9d3e 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/fileSystem/fsFactory/LocalFSFactory.java @@ -34,6 +34,7 @@ import java.io.FileWriter; import java.io.IOException; import java.net.URI; +import java.nio.file.Files; public class LocalFSFactory implements FSFactory { @@ -131,4 +132,9 @@ public File[] listFilesBySuffix(String fileFolder, String suffix) { public File[] listFilesByPrefix(String fileFolder, String prefix) { return new File(fileFolder).listFiles(file -> file.getName().startsWith(prefix)); } + + @Override + public boolean deleteIfExists(File file) throws IOException { + return Files.deleteIfExists(file.toPath()); + } }