Hallo zusammen,
hätte eine kleine Frage:
ich bastle grade an einer Applikation, die mit Hilfe eines Druckertreibers eine TIFF-Datei erstellt. Leider kann man bei dem Treiber den Ausgabepfad nicht dynamisch festlegen, aus diesem Grund muß die erstellte TIFF-Datei noch in den gewünschten Ordner kopiert werden.
Problem: ich starte den Thread, der die TIFF-Erzeugung anstösst - bevor ich allerdings mit dem Kopiervorgang beginnen kann, muss ich sicherstellen, dass das TIFF fertiggestellt wurde (sehe ich doch richtig??)
Da der Treiber keine Java-API hat, kann ich leider nicht auf dessen Funktionen zurückgreifen.
Bisher verwende ich folgende Kopierschleife:
Na ja, das Problem ist, dass eben nicht das gesamte TIFF kopiert wird, sondern nur ein Teil davon...
Wie kann ich feststellen, ob ein File, dessen Adresse ich natürlich habe, dessen Größe ich allerdings nicht wissen kann, vollständig auf Platte geschrieben wurde?? Der Test darauf, ob das File eine Größe ungleich 0 hat, scheint nicht zu funktionieren, da sich während des Schreibvorgangs die Größe tatsächlich zu vergrößern scheint bis die tatsächliche Größe erreicht wurde (sollte ich mich da irgendwie getäuscht haben, bitte ich um Berichtigung).
Danke, Alex
hätte eine kleine Frage:
ich bastle grade an einer Applikation, die mit Hilfe eines Druckertreibers eine TIFF-Datei erstellt. Leider kann man bei dem Treiber den Ausgabepfad nicht dynamisch festlegen, aus diesem Grund muß die erstellte TIFF-Datei noch in den gewünschten Ordner kopiert werden.
Problem: ich starte den Thread, der die TIFF-Erzeugung anstösst - bevor ich allerdings mit dem Kopiervorgang beginnen kann, muss ich sicherstellen, dass das TIFF fertiggestellt wurde (sehe ich doch richtig??)
Da der Treiber keine Java-API hat, kann ich leider nicht auf dessen Funktionen zurückgreifen.
Bisher verwende ich folgende Kopierschleife:
Code:
try {
FileInputStream fis = new FileInputStream(tiffFileByPrinterDriver);
FileOutputStream fos = new FileOutputStream("sometiff.tif");
byte[] buf = new byte[2048];
int i = 0;
while((i=fis.read(buf))!=-1) {
copiedbytes += i;
fos.write(buf, 0, i);
}
fis.close();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
Na ja, das Problem ist, dass eben nicht das gesamte TIFF kopiert wird, sondern nur ein Teil davon...
Wie kann ich feststellen, ob ein File, dessen Adresse ich natürlich habe, dessen Größe ich allerdings nicht wissen kann, vollständig auf Platte geschrieben wurde?? Der Test darauf, ob das File eine Größe ungleich 0 hat, scheint nicht zu funktionieren, da sich während des Schreibvorgangs die Größe tatsächlich zu vergrößern scheint bis die tatsächliche Größe erreicht wurde (sollte ich mich da irgendwie getäuscht haben, bitte ich um Berichtigung).
Danke, Alex