Friday 9 August 2013

DELETE_ON_CLOSE deletes files before close on Linux

DELETE_ON_CLOSE deletes files before close on Linux

I have this following code using Java 7 nio API:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
public class TestDeleteOnClose {
public static void main(String[] args) throws IOException {
Path tmp = Files.createTempFile("a", "b");
OutputStream out = Files.newOutputStream(tmp,
StandardOpenOption.DELETE_ON_CLOSE);
ObjectOutputStream os = new ObjectOutputStream(out);
os.write(0);
os.flush();
System.out.println(Files.exists(tmp));
os.close();
System.out.println(Files.exists(tmp));
}
}
On Windows, I see what I expect, i.e true false. On Linux I see false
false. Is it expected? Am I doing something wrong? The fact that the file
is deleted too early is problematic since I need to test it for its size
for instance after having written to it.
I use jdk7u25 on both Linux and Windows and could reproduce on machines
with RedHat or ArchLinux on it.

No comments:

Post a Comment