Я хотел получить некоторый совет, я запустил на новом проекте создать акселератор загрузки Java, который будет использовать многочисленные связи. Я хотел знать, как лучше всего пойти об этом.
До сих пор я выяснил, что могу использовать HttpUrlConnection и использовать свойство диапазона, но требуемый для знания эффективного способа сделать это. Как только я имею, загружают части с многочисленных связей, я должен буду тогда присоединиться к частям так, чтобы мы закончили с полностью загруженным файлом.
Заранее спасибо:)
myfile.part1
, myfile.part2
, ...Я попробовал следующий код для получения длины содержимого:
public Downloader(String path) throws IOException {
int len = 0;
URL url = new URL(path);
URLConnection connectUrl = url.openConnection();
System.out.println(len = connectUrl.getContentLength());
System.out.println(connectUrl.getContentType());
InputStream input = connectUrl.getInputStream();
int i = len;
int c = 0;
System.out.println("=== Content ===");
while (((c = input.read()) != -1) && (--i > 0)) {
System.out.print((char) c);
}
input.close();
}
Вот пример кода для объединения файлов:
public void join(String FilePath) {
long leninfile=0, leng=0;
int count=1, data=0;
try {
File filename = new File(FilePath);
RandomAccessFile outfile = new RandomAccessFile(filename,"rw");
while(true) {
filename = new File(FilePath + count + ".sp");
if (filename.exists()) {
RandomAccessFile infile = new RandomAccessFile(filename,"r");
data=infile.read();
while(data != -1) {
outfile.write(data);
data=infile.read();
}
leng++;
infile.close();
count++;
} else break;
}
outfile.close();
} catch(Exception e) {
e.printStackTrace();
}
}
Если вы хотите избежать присоединения сегментов после загрузки, вы можете использовать FileChannel
.
С помощью FileChannel
вы можете писать в любую позицию файла (даже с несколькими потоками).
Таким образом, вы можете сначала выделить весь файл, а затем
записать сегменты, которым они принадлежат по мере их поступления в .
См. страницу документации Javadocs для получения дополнительной информации.
JDownloader - лучший загрузчик, который я видел. Если вам интересно, он с открытым исходным кодом, и вы наверняка сможете многому научиться из их кода.