Metadaten, die Sie hinzufügen möchten, werden am besten in einer separaten Datei oder Datenbank für alle Dateien aufbewahrt.
Oder in einer anderen Datei mit dem gleichen Namen und andere Erweiterung oder Präfix, die Sie ausblenden können.
Sich auf ein Dateisystem zu verlassen, ist sehr schwierig und Ihre Daten sind an die Beschränkungen und Fähigkeiten des Dateisystems gebunden, auf dem Ihre Datei gespeichert ist. Und Sie können nicht darauf zählen, dass Ihre Daten intakt bleiben, da jede Anwendung diese Flags ändern möchte.
Und einige von denen haben sehr spezifische, klar Verwendung definiert, wie die Erstellungszeit, Änderungszeit, Zugriffszeit ...
See, wenn Sie das Dokument müssen nur das Markieren, können Sie möchten die Erstellungszeit verwenden, , die während der Laufzeit dieses Dokuments unverändert bleiben (bis es kopiert wird), um Ihre Flaggen zu speichern. : D
Sehr schmutziges Geschäft, unprofessionell, unzuverlässig und all das.
Aber es ist eine Lösung. Schlechter, aber existiert.
Ich weiß nicht, dass FAT32 oder NTFS-Dateisysteme irgendwelche zusätzlichen Bits für das Markieren unterstützen, außer denen, die bereits vom Betriebssystem verwendet werden. Unixes EXT-Familie FS unterstützen einige zusätzliche Bits. Und selbst dann sollten Sie vorsichtig sein, falls eine andere wichtige Anwendung sie für etwas verwendet.
Mac OS unterstützt möglicherweise einige Metadaten selbst, aber ich bin nicht 100% sicher.
Unter Windows haben Sie eine weitere Option, um mehr Daten mit einer Datei zu verknüpfen, aber das würde ich auch nicht verwenden.
Nun, NTFS-Dateisystem (FAT unterstützt das nicht) hat eine Funktion namens Streams.
In essential, same file can have multiple data streams under itself. I.e. You have more than one file contents under same file node.
Um klarer zu sein. Die gleiche Datei enthält zwei verschiedene Dateien.
Wenn Sie die Datei öffnen, ist normalerweise nur der Hauptstream für die Anwendung sichtbar. Anwendungen müssen überprüfen, ob die anderen Streams vorhanden sind, und die gewünschte Streams auswählen.
Sie können also Metadaten im zweiten Stream der Datei speichern.
Aber was ist, wenn alle Ströme genommen werden?
Noch mehr, Anti-Viren-Programme können Sie den Zugriff auf die Metadaten aus Paranoya verhindern, oder zumindest um eine Erlaubnis bitten. Ich weiß nicht, warum MS diese Option enthielt, wahrscheinlich für Datenduplizierung oder so, aber schlechte Hacker nutzten die Tatsache, dass Sie einige Daten unter vorhandenen regulären Dateien speichern können, die niemandem bekannt ist.
Stellen Sie sich einen Virus vor, der seine Kopie in einen anderen Stream eines der bereits vorhandenen Programme schreibt.
Alles, was zum Starten benötigt wird, anstelle des alten Programms, wenn Sie es das nächste Mal ausführen, ist ein Batch-Skript, das dem Taskplaner hinzugefügt wurde und zwei Datenströme umwandelt.
Nasty Trick! Als diese Funktion missbraucht wurde, begann die Antivirus-Software damit, Dateien mit mehreren Streams einzuschränken. Es ist also so, dass diese Funktion nicht existiert.
Wenn Sie einige Metadaten mithilfe der Technologie von OS hinzufügen möchten, verwenden Sie die Windows-Registrierung , aber auch das ist unklug.
Was soll ich Ihnen sagen? Fügen Sie keine Metadaten zu Dateien hinzu, organisieren Sie keine separate Datei oder indizieren Sie Ihre Daten in speziellen Dateien mit demselben Namen wie die Datei, auf die Sie verweisen, und in demselben Ordner.
Wenn Sie nach einer breiten Palette von Inhaltstypen suchen, benötigen Sie beispielsweise: https://tika.apache.org/. Andernfalls hat Go HTTP pkg einen grundlegenden 'DetectContentType', der bei einigen MIME-Typen auftreten kann. In den meisten Fällen müssen Sie sich auf die Dateiköpfe oder die Erweiterung für die Typerkennung verlassen (es gibt Pakete dafür). – MrSaints
@MrSaints Ich suche eine nicht webbasierte Lösung. Es ist ein Programm zum Verschieben von Dateien auf Windows basierend darauf, ob sie ein 'Dateiattribut' haben oder nicht. Ich habe nur das, was ich brauche, mit HTTP-Headern verglichen. Außerdem musste ich den Inhaltstyp nicht bestimmen, ich hoffte auf eine Methode, mit der ich die "Header" aller Dateien unabhängig von ihrem Inhaltstyp bearbeiten konnte. Vielen Dank. –
Dateimetadaten, z. B. der Titel einer PDF, die Anzahl der Zeilen in einem Office-XML-Dokument (.docx), der Künstler in einer MP3-Datei usw. sind alle dateispezifisch. NTFS bietet eine API für diese Art von Informationen unter Verwendung seiner ["Alternate Data Streams"] (https://social.msdn.microsoft.com/Forums/vstudio/en-US/416cf926-a091-4028-8d09-f9d93c3b1ba7/read -any-Datei-Details-und-Metadaten-using-c? Forum = vclanguage # bf763052-f2c4-4578-ba33-2a2105ac5447), vorausgesetzt, Windows hat die ADS für die Datei an erster Stelle erstellt. Ich kenne keine Go-Pakete, um diese Informationen zu erhalten. –