Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Verzeichnis auf Datei überprüfen

Empfohlene Antworten

Veröffentlicht

Auf einem Server wird täglich in einem bestimmten Zeitraum, aber kein bestimmter Zeitpunkt eine .bak Datei erstellt.

Jetzt bin ich dabei und wollte ein Programm mit Java programmieren, dass die ganze Zeit überprüft, ob in dem Verzeichnis eine NEUE .bak datei erstellt wurde und diese dann in ein anderes Verzeichnis kopiert. Das kopieren sollte nicht das Problem sein, jedoch habe ich keinen Ansatz für die Überprüfung.

Im Dateinamen steht übrigens das Datum wann die Datei erstellt wurde.

Kann mir jemand einen Ansatz liefern, wie ich diese Überprüfung machen kann?

Da Du also weder weißt, wie die Datei genau heißt, noch wo sie genau liegt, führt wohl kein Weg an einem Festplatten-Scan vorbei.

Du besorgst Dir ein File-Objekt auf das übergeordnete Verzeichnis/Laufwerk und prüfst alle enthaltenen Dateinamen auf ein definiertes Muster. Und das machst Du rekursiv für alle enthaltenen Verzeichnisse.

Welches OS verwendest du?

Das Problem würde ich nicht mit Java lösen wenn es nur um das reine kopieren von der Datei geht. Ich würde da eine Scriptsprache vom System nehmen.

Also unter Linux ein kleines Script was die Datei kopiert. Das Script wird dann in die cron aufgenommen und dann wird es jede Stunde/ Minute gebrüft ob die Datei da ist. Auch ist es möglich das Script zu starten wenn der Prozess beendet ist der die .bak erzeugt hat.

  • Autor

Die .bak Dateien werden immer im selben Verzeichnis gespeichert.

Also weiß ich auch wo sie sind.

Die Dateien haben immer den selben Anfang und die selbe Endung. Nur das das Datum das im Namen steht anders ist.

Ich weiß jetzt nicht, wie ich überprüfen kann dass eine neue .bak datei hinzugekommen ist.

Wie man ein Verzeichnis ausliest über ein File Objekt und wie man überprüfen kann ob eine BESTIMMTE Datei existiert weiß ich auch.

Nur wie kann ich überprüfen, dass eien aktuelle Datei hinzugekommen ist?

-edit-

@Schiller256, ich habe die Aufgabe von meinem Chef bekommen es mit Java zu machen ;) (bin noch Azubi)

ob in dem Verzeichnis eine NEUE .bak datei erstellt wurde [...] jedoch habe ich keinen Ansatz für die Überprüfung.
Du erstellst dir ein File Objekt auf dein Verzeichnis, damit hast das übergeordnete Directory, innerhalb dessen du regelmäßig nach neuen Dateien suchst.

Als Ansätze:

File(String pathname)

Creates a new File instance by converting the given pathname string into an abstract pathname.

File#listFiles()

Returns an array of abstract pathnames denoting the files in the directory denoted by this abstract pathname.

Wenn du schon weisst, wie die Datei heisst:

File#exists()

Returns the time that the file denoted by this abstract pathname was last modified.

Wenn du das Änderungsdatum haben willst:

File#lastModified()

Tests whether the file or directory denoted by this abstract pathname exists.

Nur wie kann ich überprüfen, dass eien aktuelle Datei hinzugekommen ist?
Du musst definieren und nachhalten, was neu für dich bedeutet.

Entweder du betrachtest alle Dateien, die überhaupt im Verzeichnis existieren als neu und verschiebst die Dateien, sobald sie verarbeitet sind in ein Archiv-Verzeichnis, oder aber du merkst dir den Zeitpunkt deines letzten Checks und überprüfst nur Dateien, die nach diesem letzten Check geändert worden sind.

  • Autor

Naja, es soll täglich immer eine .bak datei kopiert werden. Die anderen bleiben unagerührt in dem Verzeichniss.

D.h. ich muss mir wie du sagtest den Zeitpunkt merken, wann die letzte Datei erstellt wurde.

Aber ich glaube mit der lastModified kann ich da schon was machen.

Danke schonmal für die Hilfe.

Hallo Oki,

du weisst doch ganz genau, wie die datei heist.

foobarAKTUELLESDATUM.bak

Suche nach der Datei entweder um 23.59 oder meinetwegen minütlich und kopiere sie.

Wo ist das Problem?

  • Autor

Ich weiß halt nicht ganz genau wie dei Datei heißt.

Das aktuelle Datum ist die unbekannte.

Die Datei heißt z.b. db_200508310602.bak

Nur wird die Datei irgendwann innerhalb einer Stunde erstellt und ich muss genau diese aktuelle Datei aus den ganzen anderen .bak dateien die an Tagen zuvor erstellt wurden herrausfiltern und kopieren.

Ich habe mal eine Treemap erstellt und und diese nach lastModified sortiert.

Nur irgendwie bringt mich das jetzt auch nicht weiter, da ich nicht weiß wie ich den nu sagen soll, dass er nach eienr Datei suchen soll, die neuer ist als die letzte vom vorigem Tag :rolleyes:

Man könnte doch auch das aktuelle Datum abfragen und mit RegEx die Dateinamen abgleichen?!?

Du speicherst ja eine Version immer als save irgendwo auf deiner Platte ab.

Also könntest du auch einfach die Datei vom Server Zeile für zeile mit der von der Platte abgleichen. Je nach größe der Datei halt häufiger oder seltener. Wäre bissl irrsinnig ne 5 GB Datei alle 30 minuten abzugleichen.

Tja und wenn die Datei die selbe ist dann ziehst sie halt rüber.

Die Dateinamen sind doch alle Strings. Also kannst du sie alphabetisch sortieren. Die Reihenfolgen der Zahlen bleibt erhalten. Also ist db_200508310602.bak "kleiner" als db_200509010602.bak.

Dann nimmst du das letzte Element der sortierten Liste und machst was immer du willst.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.