Diese Frage denke ich ist technisch genug für S/O, und wahrscheinlich auch zu programmieren-orientierte für Android. Ich bin fasziniert, wie Dateien in Android (oder Java oder Linux, wie angemessen) gehandhabt werden, da ich etwas mit meinem neuen Smartphone gemacht habe und ich würde gerne wissen, wie es passiert ist.Warum kann ich eine Datei unter Linux erfolgreich verschieben, während sie geschrieben wird?
Ich habe eine Datei von meinem Laptop auf mein Android-Handy über Bluetooth übertragen. Ich habe die neue Datei im Dateiexplorer gesehen, angenommen, dass sie vollständig übertragen wurde, und sie so von /sdcard/bluetooth
zu /sdcard/torrents
verschoben. Nachdem ich das getan hatte, bemerkte ich, dass es tatsächlich noch übertragen wurde. Zu meiner Überraschung wurde es erfolgreich abgeschlossen, bestätigt mit einem Benachrichtigungssymbol im Telefon und durch eine manuelle MD5-Überprüfung auf beiden Seiten. In den meisten Systemen hätte die Dateiverschiebung einen Absturz verursacht.
Was ist der Grund für diese erfolgreiche Übertragung? Mir ist bekannt, dass der Dateipfad im Allgemeinen vom Dateispeicherort im Dateisystem (in diesem Fall eine SD-Karte) getrennt ist. Ich stelle mir vor, dass die Bluetooth-App ein Handle für die Datei geöffnet hat, und als ich die Datei verschoben habe, wurde eine Tabelle mit "geöffneten Dateien" mit einem neuen Pfad aktualisiert. Gilt diese Funktion generell für jedes Linux-System? Könnte ich eine mv
für eine Datei schreiben und erwarten, dass die Kopie - an ihrem neuen Speicherort - korrekt ist?
Warum sollte das Verschieben von Dateien zwischen zwei verursachen einen Absturz verschiedene Dateisysteme zu beginnen? Die Dateien selbst sind Kludges von Binärdaten; Das Dateisystem stellt nur dar, wie diese Datenmenge gespeichert, dargestellt und entfernt wird. – Makoto
Das Verschieben einer Datei in sich würde nicht zu einem Absturz führen, aber 'mv' für eine Datei _während es noch in to_ geschrieben wird, würde wahrscheinlich (da im Allgemeinen ein System, das in eine Datei schreibt, davon ausgehen können sollte Die Datei bleibt vom Schreib-Öffnen bis zum Schreiben-Schließen am selben Ort. Ich versuche zu verstehen, ob der letzte Fall für alle Linux (oder Java oder Android) Systeme gilt. Extra Scout/Brownie Punkte für jeden, der erklären kann, warum das gelingt! – halfer