Hallo,
ich möchte von einem Ordner eine eindeutige ID ermitteln.
Diese ID darf sich für den entsprechenden Ordner nicht ändern.
D.h. wenn der Ordner verschoben ober umbenannt wird, muss die ID gleich bleiben.
Also egal was mit dem Ordner passiert, ich möchte ihn anhand einer Id wieder erkennen können.
Mit einem Filewatcher der evtl. entsprechende Events abfängt löst leider nicht mein Problem.
Ich habe auch schon ein Beispiel von folgender Seite probiert:
Getting a Folder ID C#
Das klappt auch schon, nur leider erhalte ich bei einigen Ordnern eine Fehlermeldung das eine Datei nicht gefunden wurde.
Kann mir vielleicht jemand weiterhelfen wie ich das Problem am besten lösen kann?
Vielen Dank im Vorraus!
Gruß
vreden123
Hi,
Generiere eine zufällige Guid und packe die in eine Datei in den Ordner.
LG pdelvo
Ne das geht leider nicht. Wird die Datei gelöscht kann ich den Ordner nicht mehr zuordnen. Das muss nur am Ordner fest gebunden sein.
Es gibt keine eindeutige ID eines Ordners. Selbst bei einem Move erfolgt ein Create und Delete.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Mir ist gerade noch eine Idee gekommen. Und zwar kann ein Ordner auch mehrere NTFS Streams umfassen, in dem man soetwas speichern kann. Dann wärst du aber an NTFS gebunden, und solche Informationen überleben auch keinen Transfer über z.B. FTP.
LG pdelvo
Das wäre eine Möglichkeit weil der Order nur im unterordner verschoben wird. Also ein ftp ect.
Wie komme ich denn an den Stream ran?
In meinen oben geposteten link klappte das auch bei einigen Ordnern und bei anderen nicht. Leider weiß ich nicht woran das lag.
Hallo,
Es gibt hier auf MyCSharp sogar einen Artikel dazu: [Artikel] Alternative NTFS Datenströme
LG
Das ist evtl. Eine Möglichkeit.
Mir ist da noch was eingefallen, kann man einem Ordner eigene definierte Attribute geben? Also zb. Das Attribute id mit einer zufälligen id?
Ist sowas möglich?
Hast Du Dich schon mal mit NTFS befasst und hast verstanden, wie auf dem FileSystem Dateien und Ordner abgelegt werden?
Vielleicht löst das schon seeehr viele Fragen und erweitert auch das Verständnis, wieso das so keinen Sinn macht 😉
Du brauchst eine Zwischenschicht, da Dir NTFS und dessen Features wohl nicht reichen.
Wie wärs mit GridFS?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo vreden123,
obwohl ich schon denke, dass NTFS Möglichkeiten bietet, um Zusatzinformationen zu einem Ordner abzulegen, z.B. die genannten ADS, wird das Problem immer sein, dass nicht alle Programme diese Zusatzinformationen berücksichtigen, z.B. wenn man ein Backup erstellt und später wieder einspielt, könnte die Information verloren sein.
Ich persönlich finde eine zusätzliche Datei mit der ID im Ordner gar nicht schlecht. Warum sollte diese gelöscht werden? Durch den Benutzer? Wenn der andere Dateien aus dem Ordner löscht, könnte es auch Probleme geben. Die zusätzliche Datei ändert also nichts prinzipielles. Davon abgesehen könnte man die Zugriffsrechte auf die Datei so einschränken, dass zumindest ein versehentliches Löschen ausgeschlossen ist.
herbivore
Ist nicht evtl. der Pfad zu einer Datei schon eine eindeutige ID? Den könnte man dann auch noch hashen so das es es mehr aussieht wie eine typische "id"...
Dieser Vorschlag genügt nicht der Anforderung aus dem Startbeitrag, dass die ID bei Umbenennung und/oder Verschiebung unverändert bleibt.
ich würde auch zu einer Datei raten, vllt ne simple Ini (ID = something) oder eine xml (für zukünftige
erweiterungen), die Datei als versteckt markieren und vllt noch den FileSystemWachter dazu nutzen
automatisch solch eine Ini/xml anzulegen wenn ein neuer Ordner angelegt wird. vorher natürlich
prüfen ob solch eine Datei bereits vorhanden ist. (falls der ordner verschoben wird)
MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden!
*"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht."
*"Ignorance simplifies ANY problem."
*"Stoppt die Piraterie der Musikindustrie"