Это вопрос, связанный с установкой размера байтового массива для буфера для записи() локального файла из потока URL:
byte[] buffer = new byte[26];
26 кажется магическим числом. Если я поставил что-нибудь выше 26 (скажем 1024), он все еще записывает первые 26 символов в файл. Зачем? Обратите внимание, что я не пытаюсь написать весь поток (используя цикл while), просто пытаясь понять, почему самый большой кусок всего 26 символов.
Здесь полный код:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadNetworkFile {
public static void main(String[] args){
File f2 = new File("target3.txt");
try {
OutputStream out = new FileOutputStream(f2);
URL url = new URL("http://services.explorecalifornia.org/rss/tours.php");
InputStream stream = url.openStream();
byte[] buffer = new byte[1024];
int len=stream.read(buffer);
out.write(buffer,0,len);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Вам не хватает волшебного ингредиента: while-loop
.
Вам нужно прочитать из Интернета и записать файл, а len> 0. Затем вы закончили.