2016-04-14 8 views
2
ist

Angenommen, ich habe ein Programm, das Dateien aus dem Ordner A in den Ordner B verschiebt und dann über JMS sendet. Dieser Teil funktioniert gut, aber es versucht immer noch, Dateien zu verschieben, wenn keine Dateien mehr da sind. Atm Ich habe eine Arbeit rum, dass die Verbindung schließt, wenn keine Dateien da sind, aber wie es im Titel sagt, sollte das Programm stoppen, oder eher "Leerlauf", bis eine Datei im Ordner ein und dann weiter bewegen und diese Ordner senden. Ich habe keine Ahnung, ob das überhaupt machbar ist überhaupt in Java, so etwas Hilfe bitte, würde es zu schätzen wissen :) Mein Code für die Arbeit um:Programm sollte weiterarbeiten, wenn die Datei im Ordner

//dir is the "folder a" path 
if (dir.listFiles().length == 0) { 
      try { 
       Thread.sleep(60000); 
       if (dir.listFiles().length == 0) { 
        session.close(); 
       } 
      } catch (InterruptedException e) { 
      } 
     } 

Antwort

0

Wenn Sie auf * nix laufen lassen, gibt es immer aktuelles Verzeichnis ('.') und übergeordnetes Verzeichnis ('..'), was meiner Meinung nach immer die Länge> 0 ergibt.

Unter Windows existieren die gleichen Verzeichnisse, aber nicht sicher, ob sie zurückgegeben werden, dort weniger aufdringlich in Windows.

Und listFiles() gibt alles, was im Verzeichnis ist, als eine Datei zurück, die andere Verzeichnisse enthalten kann. Sie müssen möglicherweise einen Dateifilter erstellen, wenn Sie wirklich nur Dateien wollen.

0

Was Sie versuchen zu tun, kann nicht in einem kurzen Abschnitt des Codes getan werden. Ich habe ein Open-Source-Projekt namens Universal File Mover (UFM) erstellt. Eine seiner Funktionen ist es, nach Dateien zu suchen und dann etwas mit ihnen zu machen. d. h. Senden Sie sie über MQ oder ftp oder sftp oder http oder eine andere UFM-Aktion.

Laden Sie den Quellcode für UFM herunter und ziehen Sie das Paket 'biz.capitalware.ufm.watch' heraus, mit dem Sie Verzeichnisse oder bestimmte Dateien beobachten können.

+0

so gibt es keine einfache Möglichkeit, nach eingehenden Dateien zu sehen? oh und es wäre so schön zu erwähnen, in welcher aktion oder was auch immer das wtach eingerichtet ist :) danke – KleineKiwi

+0

Ernsthaft ?? Sie können den Code nicht herunterladen ODER das Inhaltsverzeichnis des Handbuchs lesen und eine Aktion mit dem Namen 'Watch' bemerken. Ernst!! Jemand gibt alles und du trinkst immer noch Wein, der dir nicht die geringste Mühe abverlangt. OH MEIN GOTT. – Roger