파일을 읽는다고 생각하십시오. 파일의 끝 부분에 스트림의 끝이 있습니다. 그 이상으로 읽으 려한다면, 그렇게 할 수 없습니다. 네트워크에 연결되어 있다면 더 많은 데이터가 전송 될 때까지 기다리지 않고도 스트림이 끝날 필요는 없습니다.
파일의 경우 읽을 데이터가 더 이상 없다는 것을 알고 있습니다. 네트워크 스트림의 경우 우리는 (보통)하지 않습니다. 이 때 FileReader
데이터가 더 이상 사용할 수없는, 각성을 차단
: 간단한 대답은 : 당신이 수 없습니다. 근본적인 차이점은 파일을 적극적으로 읽는 것이지만 네트워크 스트림을 청취 할 때 수동적으로 읽는 것입니다. 네트워크에서 뭔가가 나오면 하드웨어가 신호를 운영체제로 보내고, 그러면 운영 체제가 새 데이터를 JVM에 제공하고 JVM은 프로세스를 깨우고 새로운 데이터를 읽습니다. 그러나 우리는 파일을 가지고 있지 않습니다. 적어도 즉시는 아닙니다.
가능한 해결 방법은 사용자가 가지고있는 StreamReader
에 대한 래퍼를 만드는 것입니다. 파일을 변경할 때 알림이 수신되면 사용자가 더 읽을 수 있습니다. Java 7에서는 WatchService
을 사용할 수 있습니다.
FileInputStream을 사용하여 파일을 읽습니다. –
정확히 어떤 행동을 시행합니까? 다른 프로그램이있을 때까지 프로그램을 차단 하시겠습니까? –
readLine()을 사용하여 네트워크 스트림에서 읽을 때 Reader가 null을 반환하도록합니다. – salbeira