2011-01-13 11 views
2

Technical Q&A 1497 und this question (deren Antwort aus der Tech-Note kopiert) zeigt, dass, wenn fBsyErr von FSDeleteObject bekommen, die richtigen Abhilfe FSUnlinkObject auf 10.5 + zu nennen ist.Löschen von Dateien manchmal nicht auf Mac

Was ist der technische Unterschied zwischen den beiden APIs FSDeleteObject und FSUnlinkObject (außer der Feststellung, dass FSUnlinkObject in der Dokumentation nicht angezeigt wird)? Warum sollte unlink der Fallback sein und nicht die primäre API?

+0

"API-Funktionen" **. Eine API ist eine Reihe von Funktionen, keine einzige Funktion;) Ich bin eine Terminologie Nazi./ontopic - interessante Frage. Mein Gedanke wäre, dass das Löschen es dauerhaft löschen wird, während Unlink es einfach von der Liste entfernt (sozusagen), aber die Datei ist immer noch da. Ich könnte jedoch falsch liegen. – Qix

Antwort

0

Ich würde vermuten, dass FSDeleteObject zuerst kam, weil es eine Reihe von Datei-Löschfunktionen, die lange bevor das Mac OS mit Unix verschmolzen, existierte, während die Verknüpfung einer Datei ein Unix-Konzept ist.

+0

Schlägt das einen Grund vor, warum Delete der bevorzugte Anruf sein sollte? Wenn ja, ich vermisse es. – Richard

0

Das von Ihnen verlinkte Apple-Dokument erklärt den Unterschied sehr deutlich. FSUnlinkObject hat dieselbe Semantik wie unlink() - das Löschen offener Dateien ist erlaubt. FSDeleteObject erlaubt nicht das Löschen von geöffneten Dateien und gibt diesen Fehlercode zurück, wenn Sie dies versuchen.

+0

Ja, aber das erklärt nichts - warum sollte löschen die primäre und Verknüpfung der Fallback, wenn beschäftigt? Warum nicht die ganze Zeit die Verbindung aufheben? – Richard

+1

@Richard: Wer sagt, dass Löschen die primäre ist? Das oben verlinkte Q & A sagt: "Dieser API-Aufruf ist die bevorzugte Lösung, um einen Fehler beim Löschen einer Datei ab 10.5 zu vermeiden." Aber das deutet auf einen Grund hin, die Verbindung nicht immer zu trennen: Man könnte versuchen, Code zu schreiben, der mit OS 10.4 kompatibel ist. Das war wahrscheinlich ein größeres Problem, als das Q & A geschrieben wurde, als es jetzt ist. – JWWalker