Я пытаюсь использовать сокеты в java для загрузки файлов из Интернета. Моя программа работает правильно и компилируется, но когда я иду, чтобы проверить файл после этого, то его размер равен 0 байтам. Я не уверен, где я ошибаюсь.Загрузка файлов из Интернета с использованием сокетов
BufferedInputStream download = new BufferedInputStream(socket.getInputStream());
FileOutputStream newFile = new FileOutputStream(fileName);
output.print("GET " + address + " HTTP/1.0\r\n\n");
output.flush();
byte[] input = new byte[10240];
int finished = download.read(input, 0, 10240);
Я тогда время цикла, что гарантирует, что законченный не равен -1 и призывает к более байт данных при записи его в файл с помощью:
newFile.write(input, 0, finished);
Я знаю, что мой socket настроен правильно, так как я могу загрузить и прочитать HTTP-заголовок с ним. Моя программа никогда не вводит цикл while для записи данных, функция read() возвращает -1 сразу. Как я могу исправить свой код?
Спасибо!
Редактировать: Я вижу, что это было отмечено как дубликат для ответа, который использовал класс URL, чтобы сделать то же самое. Я не могу использовать URL или URLConnection.
Почему * описать * в 'while' цикла, когда вы могли бы * отвечал * это? Где вы читаете заголовки? Где вы проверяете код возврата HTTP? – EJP
@EJP Я не думал, что мне нужно опубликовать цикл while, так как он даже не запускается, потому что «download.read (input, 0, 10240)» сразу возвращает «-1». – Shozzking
@EJP Я отправил остальную часть моего кода, связанного с моей проблемой – Shozzking