Niestety jest mały problem.
Plik przesyłam w dwóch wątkach i pierwszy z nich, który startuje od początku ładnie przesyła mi połowę pliku (przesyłam JPEG i wyświetla się tylko połowa zdjęcia).
Niestety drugi, który startuje od połowy nie przesyła pliku poprawnie (jpeg wcale się nie wyświetla)...
Fragment wąteku wysyłającego:
RandomAccessFile raf = new RandomAccessFile(plik, "rw");
//start i stop to parametry przekazywane do watku
//jesli start rowna sie polowie to przesylamy druga czesc pliku
//ale trzeba pomniejszyc stop, ktory rowna sie wielkosc pliku
//aby poprawnie obliczyc "iloscBlokow" i "reszte"
if (start != 0) {
stop = stop - start;
}
int iloscBlokow = stop / Config.getBLOK();
int reszta = stop % iloscBlokow;
int wczytane = 0;
byte[] plikBajty = new byte[Config.getBLOK()];
byte[] resztaBajty = new byte[reszta];
raf.seek(start);
for (int i = 0; i < iloscBlokow; i++) {
wczytane = raf.read(plikBajty, 0, plikBajty.length);
output.write(plikBajty, 0, wczytane);
output.flush();
}
if (reszta != 0) {
wczytane = raf.read(resztaBajty, 0, resztaBajty.length);
output.write(resztaBajty, 0, wczytane);
output.flush();
}
raf.close();
Fragment wątku odbierającego:
File plik = new File(Config.getNAZWA_KATALOGU()+Liczbalosowa+nazwaPliku);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(plik));
int odebrane = 0;
byte[] plikBajty = new byte[blok];
while (odebrane != -1) {
odebrane = input.read(plikBajty, 0, plikBajty.length);
if (odebrane != -1) {
bos.write(plikBajty, 0, odebrane);
bos.flush();
}
}
bos.close();
Może ktoś ma pomysł czemu pierwsza część pliku przesyła się OK, a druga wcale :)