diff --git a/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java b/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java index 3bd11ee17..227a05a61 100644 --- a/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java +++ b/jackrabbit-data/src/main/java/org/apache/jackrabbit/core/data/FileDataStore.java @@ -23,6 +23,8 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.RandomAccessFile; import java.lang.ref.WeakReference; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; import java.security.DigestOutputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -196,10 +198,11 @@ public class FileDataStore extends AbstractDataStore if (!file.exists()) { File parent = file.getParentFile(); parent.mkdirs(); - if (temporary.renameTo(file)) { + try { // no longer need to delete the temporary file + Files.move(temporary.toPath(), file.toPath(), StandardCopyOption.REPLACE_EXISTING); temporary = null; - } else { + } catch (IOException e) { throw new IOException( "Can not rename " + temporary.getAbsolutePath() + " to " + file.getAbsolutePath()