FileInputStream;Почему FileInputStream может стать целым числом, имеет ли оно какое-либо значение? - PullRequest
0 голосов
/ 26 мая 2018

Я изучаю Java на определенном веб-сайте, и я нашел это

 import java.io.*;
public class CopyFile {

   public static void main(String args[]) throws IOException {  
      FileInputStream in = null;
      FileOutputStream out = null;

      try {
         in = new FileInputStream("input.txt");
         out = new FileOutputStream("output.txt");

         int c;
         while ((c = in.read()) != -1) {
            out.write(c);
         }
      }finally {
         if (in != null) {
            in.close();
         }
         if (out != null) {
            out.close();
         }
      }
   }
}

Что означает c = in.read()) != -1? Почему это может быть целое число?

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Ваш FileInputStream является потоком байтов.

Когда вы вызываете FileInputStream.read(), он возвращает byte из потока или возвращает -1, если достигнут конец потока.

Когда вы пишете: c = in.read()) != -1,

  • a byte считывается из потока, расширяется как int, присваивается обратно c и
  • , выполняется проверка дляпосмотрите, успешно ли прочитан байт, сравнив возвращаемое значение с -1;
0 голосов
/ 26 мая 2018

Вы использовали метод FileInputStream.read() ( Oracle Doc ), который читает byte из файла


И ((c = in.read()) != -1) делает 2 вещи

  • получить значение in.read() и сохранить его в c (byte преобразовать в int)
  • проверить, отличается ли c от -1 (если равно -1 это означает конец файла)

То есть FileInputStream не становится int

...