Hallo Jörg,
Existiert unter Java eine Klasse, mit der man die Linux-Inode-Nummer einer Datei ermitteln kann?
Naja, ne kurze Suche im Internet hat mich zu folgendem geführt: http://www.bmsi.com/java/posix/package.html - dort gibt's ne Klasse, die java.io.File erweitert und eine Methode getStat() bietet, die Dir ein Objekt zurückgibt, das als Attribut die Inode-Nummer enthält. Ich habe allerdings keine Ahnung, wie empfehlenswert das Paket da ist.
(Hintergrund: Die Datei soll auch noch auffindbar sein, wenn sie unter Linux mit "mv" wegverschoben wurde. Deswegen kommen Pfad-Angaben zur Identifikation eigentlich nicht in Frage...Inodes hingegen wären perfekt)
Nein, wären sie nicht. Folgende Situation: Du hast eine Datei »hallo«. Du gibst jetzt auf der Kommandozeile »ln hallo bonjour« ein. Damit erzeugst Du einen Hard-Link von »hallo« auf »bonjour«. Nach dieser Operation kannst Du jedoch nicht mehr feststellen, ob »bonjour« jetzt ein Hardlink auf »hallo« ist oder »hallo« ein Hardlink auf »bonjour« - Du siehst *danach* nur zwei Verzeichniseinträge mit dem Namen »hallo« und »bonjour«, die beide auf die gleiche (!) INode zeigen.
Und noch etwas anderes: Was passiert, wenn Du die Datei zuerst kopierst und dann löschst? Dann ändert sich die INode-Nummer der Datei, die aber vom Inhalt her noch die gleiche ist.
Ich halte deswegen Deinen Wunsch, eine Datei unabhängig ihres Dateinamens zu identifizieren, für nicht machbar.
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup