# Dateiinfo von Win-Datei auslesen



## MadMax2581 (17. Juni 2008)

Hallo Zusammen!

Ich hoffe ihr könnt mir helfen. Hab schon überall im Netz gesucht, aber nichts passendes gefunden.

Ist es mit Java möglich Dateiinfos (Datei -> Eigenschaften -> Dateiinfo) von normalen Windows-Dateien auszulesen? Wenn ja, wie funktioniert es.

Bis jetzt hab ich nur gefunden das es nicht möglich ist, aber hoffentlich weiss jemand noch etwas anderes.

Oder hat jamand eine andere Idee wie ich in einer Datei quasi unsichtbar eine Checksumme einfügen kann?

Gruss
Max


----------



## matdacat (17. Juni 2008)

Hm, was sind denn "normale Windows-Dateien"? Und um welches Dateiinformationen geht's Dir genau?


----------



## MadMax2581 (17. Juni 2008)

Speziell geht es um ein C- oder Header-File. Ich will darin eine Checksumme hinterlegen die nicht jeder gleich sehen soll.

Aber im Prinzip sollte das Format egal sein. Wenn du unter Windows rechtsklick auf ne Datei machst -> Eigenschaften -> Dateiinfo, dass müsste bei allen funktionieren.

Gruss
Max


----------



## zerix (17. Juni 2008)

Hallo,

was möchtest du dann mit der Dateiinfo? Da kann es doch jeder sehen. Die Dateiinfo gibt es auch nicht bei jeder Datei.

MFG

Sascha


----------



## MadMax2581 (17. Juni 2008)

Ja, klar kann sie jeder sehen -> der es weiss. Ist aber besser als die Checksumme direkt irgendwo in die Datei zu schreiben.

Vielleicht gibt es ja noch viel bessere Lösungen, bin für jeden Vorschlag/Tipp dankbar. Hab bis jetzt nur leider nichts besseres gefunden.

Gut, die Dateiinfo gibt es sicher nicht bei jeder Datei. Aber bei C-/Header-Files gibt es sie und das ist ja für mich das entscheidende.

Gruss
Max


----------



## zerix (17. Juni 2008)

Warum möchtest du da eigentlich die Checksum speichern?

MFG

Sascha


----------



## MadMax2581 (17. Juni 2008)

Über die Checksumme kann ich sehen ob sich das File verändert hat. Ich generiere automatisch Files und muss rausfinden, wenn ich diese überschreibe, ob sie per Hand abgeändert wurden. Wenn ja, muss ich drauf reagieren -> sonst werden sie einfach überschrieben.

Gruss
Max


----------



## Sebastian29 (17. Juni 2008)

Hi MadMax!

Warum muss es eine Checksumme sein?

Wie wäre es mit diesem Beispiel? Bei der Zeit kannst du doch auch feststellen, ob der Inhalt der Datei was geändert wurde!


```
public static void main(String[] args) {
	File file = new File( "Beispieldatei.cpp" );
        Date date = new Date( file.lastModified() );
        String datum = getDateFormat(date);
        String zeit = getTimeFormat(date);

        System.out.println("Datum" + datum);
        System.out.println("Zeit" + zeit);
}

private String getDateFormat(Date date) {
	SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY);
	return format.format(date);
}

private String getTimeFormat(Date time) {
	SimpleDateFormat format = new SimpleDateFormat("HH.mm.ss",Locale.GERMANY);
	return format.format(time);
}
```

Gruß
Sebastian29


----------



## MadMax2581 (18. Juni 2008)

Du hast sicher recht, ich könnte es auch über einen viel leichteren Zeitstempel lösen. Aber ich will ja nicht prüfen ob das File geändert wurde, sondern ob der Inhalt noch der selbe ist -> was damit fast sichergestellt werden kann. Ich hab es mir nicht ausgesucht, wird so gefordert.

Wie gesagt, die Checksumme ist nicht das Problem. Der Mechanismus funktioniert sehr gut. Auch mit einem Zeitstempel würde sich an meinem eigentlichen Problem nichts ändern, weil ich diese auch verstecken müsste. Wie kann ich das machen?

Gruss
Max


----------



## zeja (18. Juni 2008)

Wie verstecken? Das Erstellungs und Änderungsdatum einer Datei wird doch vom System mitprotokolliert. Lässt sich zwar manipulieren aber gibt schonmal nen schnelleren Anhaltspunkt als ne Checksumme. Je nach größe der Datei dauert die Berechnung dafür ja doch ne Weile. Kannst du die Checksumme nicht in einer Datenbank oder extra-Datei hinterlegen? z.B. einer Datei die du auf versteckt stellst?


----------



## zerix (18. Juni 2008)

Also ich würde es entweder so machen, wie zeja vorgeschlagen hat. Etwas in der Richtung hatte ich auch überlegt. Oder halt am Ende der Datei als Kommentar einfügen.

MFG

Sascha


----------



## Sebastian29 (18. Juni 2008)

OK, dann gibt es ein API namens "Jacksum  1.7.0"!

hier

Das ist bestimmt genau das Richtige für Dich! ;-)

Gruß
Sebastian29


----------



## MadMax2581 (19. Juni 2008)

Danke für eure Antwort, aber die bringen mich leider nicht wirklich weiter.

@zeja +zerix:
Die Lösung mit der Checksumme ist vorgegeben und kann nicht geändert werden. Muss sie auch nicht, die Basis ist gut. Habe in dieser Richtung schon alles programmiert und es funktioniert auch einwandfrei. In ner Datenbank oder externen Datei kann ich die Checksummen nicht verwalten, ist durch die Projektstruktur in die die Datei einfließen nicht gewollt.

Bis jetzt habe ich die Checksumme als Kommentar mit in das File geschrieben, so wie es Sascha auch sagte. Aber die Lösung ist nicht sehr gut, weil die Checksumme ja jeder sofort sehen und abändern kann.

Deswegen dachte ich man kann sie vielleicht im Anhang der Datei unterbringen. Da fällt sie nicht sofort auf und man brauch sich nicht um die Verwaltung der Checksumme kümmern. Da wäre ne gute Lösung für mich, aber scheint ja eher nicht zu gehen.

Meine Anforderungen wären nur:
- die Checksumme irgendwo in der Datei unterbringen, ohne das man sie gleich sieht
- die Checksumme muss aber schreibbar und lesbar sein

Wenn es da keine Möglichkeit gibt, muss ich sie halt im Quelltext des Files lassen. Hilft ja dann nichts.


@Sebastian29:
Das Programm hatte ich ganz am Anfang auch gesehen, bringt mich aber nicht weiter. Wie gesagt, ich suche nichts um die Checksumme zu brechnen -> das ist alles schon fertig. Ich will sie nur wie oben beschrieben unterbringen.

Gruss
Max


----------



## zerix (19. Juni 2008)

Was ist daran so schlimm, wenn sie jemand ändert?

MFG

Sascha


----------



## MadMax2581 (19. Juni 2008)

Dann kann ich ja nicht mehr sehen ob jemand etwas an dem automatisch erzeugten File geändert hat und ob ich vor dem überschreiben der Datei darauf reagieren muss. Wenn jemand aus Unwissenheit, ... die Checksumme ändert -> muss es ja noch lange nicht heissen das sich der Quelltext im File geändert hat. Aus dem Grund wollte ich die Checksumme vor dem Nutzer verbergen, sie aber trotzdem im File mitführen.

Gruss
Max


----------



## zerix (19. Juni 2008)

Was muss denn gemacht werden, wenn jemand eine Datei geändert hat?

MFG

Sascha


----------



## MadMax2581 (20. Juni 2008)

Es muss mindestens drauf hingewiesen werden, oder sogar gesichert werden. Aber das ist ja auch völlig egal. Das zu lösen ist auch nicht mein Problem!

Gruss
Max


----------



## zerix (20. Juni 2008)

Also, wenn für dich nichts externes, wie eine Datenbank in Frage kommt,  würde ich sagen, schreib die Checksumme einfach als Kommentar in die Datei. Da drüber kannst du ja noch "DO NOT EDIT" schreiben oder sowas.
Die Dateiinfo von Windows lässt sich nämlich auch bearbeiten. Also kannst man es dann auch direkt in die Datei schreiben. So hättest du noch den Vorteil, dass es auf jedem System funktioniert. 

MFG

Sascha


----------



## MadMax2581 (20. Juni 2008)

Wie gesagt, so hatte ich es schon gelöst bevor ich die Anfrage hier gestellt habe. Ich werd es jetzt aber auch so lassen bevor ich noch mehr Zeit damit verschwende.

Trotzdem danke.

Gruss
Max


----------



## zerix (20. Juni 2008)

Dass du es schon so hast, weiß ich ja. Ich wollte nur damit aussagen, dass ich es auch so machen würde, da es mit der Dateiinfo nicht sinnvoller ist.

MFG

Sascha


----------

