PDA

View Full Version : Java renameTo() über Verzeichnisse hinweg



Seiten : [1] 2

Sensonaut
26-02-10, 11:15
Hallo Ihr!

Ich benutze in einer WAS-Anwendung die Methode File.renameTo(), um eine Datei von einem Verzeichnis in ein anderes Verzeichnis darunter zu verschieben. Unter Linux klappt das auch, auf der iSeries jedoch nicht. Berechtigungen habe ich geprüft. Leider gibt das Jobprotokoll des WAS sowie System.out nichts her. Vermutlich liefert die Methode nur false und das war's. :confused:

Hat jemand eine Ahnung, wie ich die Ursache herausfinden kann bzw. warum die Aktion auf der iSeries fehlschlägt?


Danke, Titus

Sensonaut
03-03-10, 15:48
Nanu, noch niemand auf der iSeries eine Datei mit Java in ein anderes Verzeichnis übertragen?

Leider suche ich noch immer nach der Ursache für das Problem. Ich habe nun festgestellt, dass renameTo() false liefert. Aber nicht, warum das so ist. :(

Gibt es evtl. einen Server-Job, der für das IFS zuständig ist und etwas loggt?


Danke, Titus

BenderD
03-03-10, 16:17
... Ratespiele sind nicht so sehr beliebt, erzähl doch mal ein wenig genauer was du da so machst...

D*B


Nanu, noch niemand auf der iSeries eine Datei mit Java in ein anderes Verzeichnis übertragen?

Leider suche ich noch immer nach der Ursache für das Problem. Ich habe nun festgestellt, dass renameTo() false liefert. Aber nicht, warum das so ist. :(

Gibt es evtl. einen Server-Job, der für das IFS zuständig ist und etwas loggt?


Danke, Titus

Sensonaut
04-03-10, 09:58
... Ratespiele sind nicht so sehr beliebt, erzähl doch mal ein wenig genauer was du da so machst...

D*B

Achso, ich dachte, das ging schon aus meinem ursprünglichen Text hervor, den ich vor ein paar Tagen gesendet habe.

Es geht darum, dass unter WAS 6.0 und Java 1.4.2 eine Webanwendung läuft, die auch auf das IFS der iSeries zugreift. Innerhalb der Anwendung gibt es einen Job, der regelmäßig Dateien in einem Verzeichnis verarbeitet und diese danach in ein vorhandenes Unterverzeichnis verschieben soll. Dazu kann man ja die Methode File.renameTo() verwenden. Auf unserem Testsystem, das unter Linux läuft, klappt das auch. Auf der iSeries mit dem selben Code jedoch nicht. Leider gibt es auch keine Exception, aus der man erkennen könnte, was das Problem ist.

Titus

Fuerchau
04-03-10, 10:05
Schau dir den Befehl REN auf der AS/400 an.
Ein Rename geht nur im selben Verzeichnis.
Zum Verschieben gibts den Befehl MOV, der auch ein Umbenennen erlaubt.
Ich denke, in Java muss es auch eine passende Methode geben.

BenderD
04-03-10, 10:26
... ich gehe mal davon aus, dass du java.io.File verwendest, wenn du dir da die Doku ansiehst, dann siehst du, dass das vom Filesystem abhängt. Von wo nach wo willst du denn schieben???
Notfalls wirst du Plattformabhängig, wenn du das vom OS machen lässt, oder musst neu erstellen, im Java kopieren und löschen.

D*B


Achso, ich dachte, das ging schon aus meinem ursprünglichen Text hervor, den ich vor ein paar Tagen gesendet habe.

Es geht darum, dass unter WAS 6.0 und Java 1.4.2 eine Webanwendung läuft, die auch auf das IFS der iSeries zugreift. Innerhalb der Anwendung gibt es einen Job, der regelmäßig Dateien in einem Verzeichnis verarbeitet und diese danach in ein vorhandenes Unterverzeichnis verschieben soll. Dazu kann man ja die Methode File.renameTo() verwenden. Auf unserem Testsystem, das unter Linux läuft, klappt das auch. Auf der iSeries mit dem selben Code jedoch nicht. Leider gibt es auch keine Exception, aus der man erkennen könnte, was das Problem ist.

Titus

Sensonaut
04-03-10, 10:47
... ich gehe mal davon aus, dass du java.io.File verwendest, wenn du dir da die Doku ansiehst, dann siehst du, dass das vom Filesystem abhängt. Von wo nach wo willst du denn schieben???
Notfalls wirst du Plattformabhängig, wenn du das vom OS machen lässt, oder musst neu erstellen, im Java kopieren und löschen.

D*B

Ja, ich meine java.io.File. In der Doku steht "from one filesystem to another is platform-dependent". Von einem Filesystem zu einem anderen? Oder wie? Da ich nur in ein Unterverzeichnis des Quellverzeichnisses verschieben möchte, ist es aber doch das selbe Filesystem. Ich bleibe doch im IFS.

Wie auch immer, es scheint wohl im IFS nicht möglich zu sein, mit renameTo() eine Datei zu verschieben. Dann muss ich wohl auf die Copy/Delete-Lösung ausweichen. :cool:

Kennt sich hier eigentlich jemand mit dem WAS auf der iSeries aus?? Wir haben öfter Probleme mit Dateizugriffen, finden aber keine Logfiles, die genauere Informationen liefern. Im Joblog des WAS sieht man ja überhaupt nichts. Und Sytem.out, System.err sind eher Java-orientiert und geben keine Hinweise, ob und an welchen Berechtigungen es z.B. hakt. (Früher, in der native-Programmierung (CL/RPG) wurde in den Joblogs immer alles sehr detailier aufgeführt.)

Titus

BenderD
04-03-10, 13:21
... was meinst du mit IFS? QSYS.LIB, QDLS, QOpenSys (letzteres würde ich mal versuchen), QNTC.
... was das logging angeht, sollte man schon bei allen Exceptions mal zumindest getMessage() der Exception und/oder den call stack ausgeben. Standard mäßig verwendet man da log4j.
Bei CL/RPG sind solche Joblogs ein Zeichen von Huddel, bei der Abwesenheit von ErrorHandling rattert da alles durch bis zur Runtime. In Java geht das eben nicht und wer da Exceptions mit leeren catch Blöcken fängt, steht da wo er hingehört: im Wald!

D*B


Ja, ich meine java.io.File. In der Doku steht "from one filesystem to another is platform-dependent". Von einem Filesystem zu einem anderen? Oder wie? Da ich nur in ein Unterverzeichnis des Quellverzeichnisses verschieben möchte, ist es aber doch das selbe Filesystem. Ich bleibe doch im IFS.

Wie auch immer, es scheint wohl im IFS nicht möglich zu sein, mit renameTo() eine Datei zu verschieben. Dann muss ich wohl auf die Copy/Delete-Lösung ausweichen. :cool:

Kennt sich hier eigentlich jemand mit dem WAS auf der iSeries aus?? Wir haben öfter Probleme mit Dateizugriffen, finden aber keine Logfiles, die genauere Informationen liefern. Im Joblog des WAS sieht man ja überhaupt nichts. Und Sytem.out, System.err sind eher Java-orientiert und geben keine Hinweise, ob und an welchen Berechtigungen es z.B. hakt. (Früher, in der native-Programmierung (CL/RPG) wurde in den Joblogs immer alles sehr detailier aufgeführt.)

Titus

Sensonaut
04-03-10, 14:41
Es handelt sich um ein Verzeichnis in "/QIBM/UserData". Ich dachte, alles was nicht Bibliothek oder QDLS sei, ist IFS.

Logging usw. übernimmt hier das Framework. Da die Methode keine Exception wirft, wird auch nichts geloggt oder kann mit getMessage() ausgegeben werden. Sonst würde ich hier ja nicht fragen.

Titus

BenderD
04-03-10, 15:01
die Hinweise zum logging bezogen sich auf die "Fehler bei Dateizugriffen" von denen du da schreibst. Das Verhalten von java.io.File ist in der Javadoc klar so beschrieben. QOpenSys wäre noch einen Versuch wert, das ist ein Unix like Dateisystem im IFS.

D*B


Es handelt sich um ein Verzeichnis in "/QIBM/UserData". Ich dachte, alles was nicht Bibliothek oder QDLS sei, ist IFS.

Logging usw. übernimmt hier das Framework. Da die Methode keine Exception wirft, wird auch nichts geloggt oder kann mit getMessage() ausgegeben werden. Sonst würde ich hier ja nicht fragen.

Titus