Java - длина буфера для записи файла

1

Это вопрос, связанный с установкой размера байтового массива для буфера для записи() локального файла из потока 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();
        }
    }
}
Теги:
arrays
buffer

1 ответ

0
Лучший ответ

Вам не хватает волшебного ингредиента: while-loop.

Вам нужно прочитать из Интернета и записать файл, а len> 0. Затем вы закончили.

  • 0
    Я не пытаюсь написать весь контент потока, только первый кусок. Я просто проверяю размер буфера. Почему он ограничен 26 символами - это мой вопрос.
  • 0
    Это не ограничено 26 байтами. В вашем случае соединение TCP / IP просто делает полезную нагрузку первого пакета 26 байтов. Это будет отличаться в разных средах, поэтому не делайте выводов из «магического числа» 26.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню