Hello,
Adott az alábbi cucc. Egy blob-ot vadász elő, majd meghívja a hozzá társított app-ot (pl. pdf esetén acrobat reader stb.).
Ha mondjuk egy nagyobb zip fájlt szedek elő, akkor az a helyzet, hogy a proc.waitfor() okosan megvárja, míg a windows explorer elindul, de már nem várja meg, míg a fájlt felolvassa. A következő sorom, pedig a file.delete(), ami törli az input állományt, mivel ez itt egy fapados megtekintés funkció (eg. user nem módosíthat az állományban semmit.)
Szóval erre kellene valami működő megoldás.
public void View_File(String outfile) throws Exception {
String rundll = "cmd /c ";
String param=null;
File file = new File(outfile);
FileChannel channel = new RandomAccessFile(file, "r").getChannel();
FileLock lock=null ;
try {
Gen_Log(hdm.DocId,hdm.Fver,"I",hdm.message.getProperty("msg5"),hdm.DocAzon);
//file.setReadOnly();
Gen_Log(hdm.DocId,hdm.Fver,"I",rundll + " ' " + outfile+" ' ",hdm.DocAzon);
param="\""+ outfile+"\"";
hdm.log.info(rundll + param);
Process proc = Runtime.getRuntime().exec(rundll+param);
proc.waitFor();
try {
lock = channel.tryLock();
} catch (NonWritableChannelException e) {
hdm.log.info("file lock");
}
lock.release();
channel.close();
//file.delete();
} catch (IOException ex) {
if(file.exists()) {
file.delete();
}
throw ex;
}
}
Próbálkoztam, hogy megnézem van e még lock a fájlon (explorer fogva tartja e még:), de meddig várjak itt ? Amíg tudok lockot szerezni ?
Köszönöm!