java.io는 어댑터 모드 장식 모드와 같은 설계 패턴을 사용하여 소켓과 문자 스트림의 입력 및 출력 문제를 해결합니다.
바이트 스트림은 한 번에 하나의 바이트 만 처리 할 수 있으며 데이터를보다 쉽게 작동시키기 위해 소켓 스트림이 추가됩니다.
문제 소개 :
버퍼링 스트림이 일반 파일 바이트 스트림보다 더 효율적인 이유는 무엇입니까?
버퍼링이없는 작업의 경우 각 바이트를 읽을 때마다 1 바이트를 작성해야합니다.
디스크와 관련된 IO 작업은 메모리 작업보다 훨씬 느리기 때문에 버퍼링이없는 스트림은 매우 비효율적입니다.
버퍼가있는 스트림은 한 번에 많은 바이트를 읽을 수 있지만 디스크에 쓸 수는 없지만 먼저 메모리에 배치됩니다.
버퍼 크기가 충분하면 한 번에 디스크에 작성하십시오. 이 방법은 디스크 작업의 수를 줄일 수 있으며 속도가 훨씬 높아집니다!
이것이 둘의 차이입니다.
아마도 처리 :
캐시 영역이 없으면 읽을 때마다 IO 작업이 전송됩니다.
캐시 영역이 있습니다. 처음 읽으면 X 바이트를 읽고 캐시 영역에 넣습니다. 그런 다음 후속 읽기는 캐시에서 읽습니다. 캐시 영역의 끝까지 읽으면 X 바이트가 다시 읽히고 캐시 영역에 넣습니다.
두 번째 방법은 IO 작업을 줄이고 더 효율적이라는 것이 명백합니다. 단점은 더 많은 메모리를 소비한다는 것입니다.
Java 입력 및 출력 스트림은 다층 캡슐화를 사용하여 설계되었습니다.
가장 낮은 레벨 입력 스트림 및 출력 스트림은 바이트 스트림을 기반으로하며 캐시 메커니즘이 없습니다. 이들은 일반적으로 BufferInputStream 및 BufferOutputStream에 의해 사용 후 캡슐화되고 사용됩니다.
BufferInputStream의 읽기 방법은 스레드를 차단합니다. BufferInputStream.Read (BUF)는 반환하기 전에 모든 입력 스트림을 BUF로 읽습니다.
BufferOutputStream.write (BUF); BUF의 내용을 출력 스트림으로 출력하지만 플러시하는 것을 잊지 마십시오.
비교적 사용하기 쉬운 인쇄물 스트림과 인쇄기가 자동으로 새로 고침 될 수 있지만 바이트 스트림의 경우에도 있습니다.
바이트 스트림은 일반적으로 이진 파일 및 기타 문자 스트림을 전송하는 데 사용됩니다. 그들은 종종 독자와 싸여 있습니다.
가장 일반적으로 사용되는 것은 BufferInputStreamReader 및 PrintWrinter입니다. BufferInputStreamReader의 readline 방법은 매우 실용적이며 /r /d에 직면 할 때 자동으로 플러시됩니다.
PrintWrinter 새로 고침 속성이 생성자에서 True로 설정되는 한 PrintLn 메소드는 플러시없이 자동으로 새로 고칠 수 있습니다.
FilterInputStream 및 FilterOutputStream : 필터 흐름, 버퍼 흐름 및 데이터 흐름이 모두 여기에서 상속됩니다.
버퍼 스트림의 경우, 버퍼가 가득 찬 경우에만 데이터가 출력 스트림으로 진정으로 전송되지만 Flush () 방법을 사용하여 채워지지 않은 버퍼의 데이터를 인위적으로 보낼 수 있습니다. 파일의 인코딩 방법을 결정할 수 없으며 네트워크에 적용하기가 어렵습니다.
실제로 가장 일반적으로 사용되는 것은 데이터 스트림이 동일한 인코딩에 따라 발신자와 수신기가 처리 할 수 있다는 것입니다.
DatainputStream 및 DataOutputStream : 데이터 라인을 허용하거나 인코딩하거나 소켓 스트림이 될 수 있으며 소켓 파일 바이트 스트림 및 네트워크 바이트 스트림이 가능하며 읽기 및 쓰기 순서는 일관성이 있어야합니다. 그렇지 않으면 읽을 때 예외가 발생합니다.
DatainputStream은 다른 입력 스트림을 장식하는 데 사용되며, "애플리케이션이 기본 입력 스트림에서 기본 입력 스트림에서 기본 Java 데이터 유형을 읽을 수 있습니다." 응용 프로그램은 DataOutputStream을 사용하여 DatainputStream에서 읽은 데이터를 작성할 수 있습니다.
위의 것은 Java.io 입력 및 출력 스트림 필터링 스트림 버퍼 스트림 및 편집기가 소개 한 데이터 스트림입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!