summaryrefslogtreecommitdiff
path: root/libs/local/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'libs/local/src/main')
-rw-r--r--libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt38
1 files changed, 5 insertions, 33 deletions
diff --git a/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt
index 6aeb895..7cf7690 100644
--- a/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt
+++ b/libs/local/src/main/java/org/the_jk/cleversync/io/local/PathFile.kt
@@ -3,13 +3,9 @@ package org.the_jk.cleversync.io.local
import org.the_jk.cleversync.io.ModifiableFile
import java.io.InputStream
import java.io.OutputStream
-import java.nio.file.Files
-import java.nio.file.LinkOption
import java.nio.file.Path
-import java.nio.file.StandardCopyOption
import java.nio.file.StandardOpenOption
import java.time.Instant
-import kotlin.io.path.exists
import kotlin.io.path.fileSize
import kotlin.io.path.getLastModifiedTime
import kotlin.io.path.inputStream
@@ -18,35 +14,11 @@ import kotlin.io.path.outputStream
internal class PathFile(internal val path: Path) : ModifiableFile {
override fun write(): OutputStream {
- // If file doesn't exist, write to it directly.
- if (!path.exists(LinkOption.NOFOLLOW_LINKS))
- return path.outputStream(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE)
-
- // Otherwise, write to temp file, only overwriting when done.
- val tmp = path.parent.resolve(".#" + path.name)
- val os = tmp.outputStream(StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE)
- return object : OutputStream() {
- override fun write(value: Int) {
- os.write(value)
- }
-
- override fun write(b: ByteArray) {
- os.write(b)
- }
-
- override fun write(b: ByteArray, off: Int, len: Int) {
- os.write(b, off, len)
- }
-
- override fun flush() {
- os.flush()
- }
-
- override fun close() {
- os.close()
- Files.move(tmp, path, StandardCopyOption.ATOMIC_MOVE)
- }
- }
+ return path.outputStream(
+ StandardOpenOption.CREATE,
+ StandardOpenOption.WRITE,
+ StandardOpenOption.TRUNCATE_EXISTING,
+ )
}
override val name: String