Tak wlasnie jest. Kopiuje sobie duzy plik (ponad 200 mega) i z jednej str te 3 metody mi pokazuja juz ze moge na nim operacje robic, z drugiej str kopiowanie jeszcze trwa.. napisalam objecie, ale straasznie mi sie nie podoba:
private boolean isReady(File file) {
while (test(file) == null) {
try {
Thread.sleep(SLEEP_TIME);
} catch (InterruptedException e) {
logger.error(e);
}
}
logger.info("RELEASED!");
return true;
}
private FileInputStream test(File f) {
try {
fis = new FileInputStream(f);
} catch (FileNotFoundException e) {
logger.info("File still used by another process. Sleep for " + SLEEP_TIME + " ms ");
}
return fis;
}
czyli dopoki utworzenie FileInputStream bedzie rzucalo FileNotFoundException to program bedzie zasypial, a potem probowal jeszcze raz. Strasznie mi sie to nie podoba, ale nie znalazlam zadnego innego rozwiazania. Ludzie pisza by uzywac locka, ale w moim przypadku to tez rzuci exception. Wiec nie przyychodzi mi nic innego jak zasypiac na jakis czas..
pzdr,
misty