Я изучаю Java ООП. Моя программа загружает файл через FTP. Я хочу возобновить загрузку, когда она снова начнется. Вот мой код:
URL urlName = new URL(url);
URLConnection con = urlName.openConnection();
BufferedInputStream in = new BufferedInputStream(con.getInputStream());
int i = 0;
long downloadedSizeKB;
System.out.println("before skip");
long k = in.skip(counter);
System.out.println(k);
byte[] bytesIn = new byte[1024];
while ((i = in.read(bytesIn)) >= 0) {
if(counter >= alreadyDownloadedBytes) {
out.write(bytesIn, 0, i);
downloadedSizeKB = counter/1024;
downSize.setText(downloadedSizeKB + " KB downloaded...");
while(isPaused) {
downSize.setText(downloadedSizeKB + " KB PAUSED");
Thread.sleep(1000);
}
}
counter += i;
}
in.close();
Сначала я пытался прочитать его столько же, сколько длина ранее загруженного файла, а затем возобновить чтение и запись с этой точки. Чтение файла перед возобновлением загрузки занимает слишком много времени (1-2 минуты на 100 МБ). После этого я понял, что есть метод пропуска, но я думаю, что он делает то же самое, поскольку занимает почти такое же количество времени.
Есть ли более быстрый способ начать чтение файла с определенного его байта? Или я должен сделать это как-то по-другому? Или это единственный способ?