Я должен написать программу, которая работает аналогично команде Unix cp. Я нашел этот фрагмент кода, но не могу понять, как и почему он работает.Как работает эта простая программа копирования
FileInputStream in = new FileInputStream(args[0]);
FileOutputStream out = new FileOutputStream(args[1]);
byte[] buf = new byte[1024];
int i = 0;
while ((i = in.read(buf)) != -1) {
out.write(buf, 0, i);
}
Как работает цикл while? Я полагаю, что он читает из InputStream в 1024 байтовых частях, сохраняет их в байтовый массив buf и затем записывает buf в новый файл.
Но что
in.read(buf);
присвоить I? И как цикл while проходит через весь файл (что говорит in.read (buf) читать следующие 1024 байта данных, а не один и тот же первый 1024 снова и снова)?
Спасибо, П.
возможно прочитать документацию: in.read() возвращает количество прочитанных байтов. если никакие байты не могут быть прочитаны, он возвращает -1 – x4rf41
@ x4rf41 yes.you должен добавить это как ответ. –
Если вы не знаете, что делает метод, обычно лучше всего попытаться прочитать его документацию. Альтернативой является использование вашего отладчика для перехода через код и посмотреть, что он делает. –