Code: Select all
file.copyRecursively(File(target, file.name), overwrite = true)
file.deleteRecursively()
< /code>
Eine interessante Eigenart des Geräts, auf das ich abzielte, ist, dass die Standardbenachrichtigung für ein Anschluss angeschlossen wird, mit dem der Benutzer explizit auswerfen kann. Ich zeige einen Fortschrittszustand in der Benutzeroberfläche, während die Dateien verschoben werden (mit dem obigen Code), um zu signalisieren, dass die Festplatte nicht herausgezogen werden sollte. Wenn ich jedoch schnell nach danach ausgestoßen bin, ende ich oft mit 0B -Dateien auf dem USB -Laufwerk (für Dateien, die von der lokalen Festplatte auf das Laufwerk verschoben werden). Ich habe es geschafft, dies zu [url=viewtopic.php?t=23756]beheben[/url] (soweit ich das beurteilen kann), indem ich eine modifizierte Version von Copyresiv
> >>>> >>>
Code: Select all
this.inputStream().use { input ->
target.outputStream().use { output ->
input.copyTo(output, bufferSize)
output.flush()
output.fd.sync()
}
}
< /code>
Jetzt wird der UI -Fortschrittszustand lang genug gezeigt, dass die Dateien auf dem Laufwerk intakt sind, wenn das USB -Laufwerk sofort herausgezogen wird. Ich gehe davon aus, dass dies auf einen Unterschied liegt, wie Deletten im Exfat "verpflichtet" werden (im Gegensatz zu FAT32). Ich habe versucht, die gelöschte Datei nach dem Löschen von FSYNC