diff --git a/src/main/java/org/janelia/saalfeldlab/n5/BufferedKvaLockedChannel.java b/src/main/java/org/janelia/saalfeldlab/n5/BufferedKvaLockedChannel.java index 70ed4ba60..495eb8fbd 100644 --- a/src/main/java/org/janelia/saalfeldlab/n5/BufferedKvaLockedChannel.java +++ b/src/main/java/org/janelia/saalfeldlab/n5/BufferedKvaLockedChannel.java @@ -1,6 +1,8 @@ package org.janelia.saalfeldlab.n5; +import org.apache.commons.io.input.ProxyInputStream; import org.janelia.saalfeldlab.n5.readdata.ReadData; +import org.janelia.saalfeldlab.n5.readdata.VolatileReadData; import java.io.*; @@ -23,7 +25,15 @@ public Reader newReader() throws N5Exception.N5IOException { @Override public InputStream newInputStream() throws N5Exception.N5IOException { - return kva.createReadData(key).inputStream(); + + VolatileReadData volatileReadData = kva.createReadData(key); + return new ProxyInputStream(volatileReadData.inputStream()) { + @Override + public void close() throws IOException { + volatileReadData.close(); + super.close(); + } + }; } @Override diff --git a/src/main/java/org/janelia/saalfeldlab/n5/FsIoPolicy.java b/src/main/java/org/janelia/saalfeldlab/n5/FsIoPolicy.java index 5d01dd919..2a3e26a6e 100644 --- a/src/main/java/org/janelia/saalfeldlab/n5/FsIoPolicy.java +++ b/src/main/java/org/janelia/saalfeldlab/n5/FsIoPolicy.java @@ -69,6 +69,8 @@ public VolatileReadData read(String key) throws IOException { @Override public void delete(final String key) throws IOException { final Path path = Paths.get(key); + if (!Files.isRegularFile(path)) + Files.delete(path); try (LockedFileChannel ignore = FILE_LOCK_MANAGER.lockForWriting(path)) { Files.delete(path); }