diff options
Diffstat (limited to 'main/src/cgeo/geocaching/files')
| -rw-r--r-- | main/src/cgeo/geocaching/files/LocalStorage.java | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/files/LocalStorage.java b/main/src/cgeo/geocaching/files/LocalStorage.java index 133f39a..3dcb200 100644 --- a/main/src/cgeo/geocaching/files/LocalStorage.java +++ b/main/src/cgeo/geocaching/files/LocalStorage.java @@ -275,15 +275,18 @@ public final class LocalStorage { return false; } + try { try { - final FileOutputStream fos = new FileOutputStream(targetFile); + final File tempFile = File.createTempFile("download", null, targetFile.getParentFile()); + final FileOutputStream fos = new FileOutputStream(tempFile); final boolean written = copy(inputStream, fos); fos.close(); - if (!written) { - FileUtils.deleteIgnoringFailure(targetFile); + if (written) { + return tempFile.renameTo(targetFile); } - return written; + FileUtils.deleteIgnoringFailure(tempFile); + return false; } finally { IOUtils.closeQuietly(inputStream); } |
