둘 사이의 차이점은 바이트 스트림은 텍스트 파일과 일부 바이너리 데이터(사진, 비디오, 개체)와 같은 비텍스트 파일을 모두 작동할 수 있는 반면, 문자 스트림은 텍스트만 작동할 수 있다는 것입니다. 이는 두 가지 모두에 적용 가능한 상황이기도 합니다. 읽고 쓰는 데 사용할 데이터 스트림을 결정하는 방법은 읽고 쓰는 데이터 유형에 따라 다릅니다. 문자 스트림은 한 번에 2바이트의 유니코드 문자를 처리하고, 바이트 스트림은 한 번에 하나씩 처리한다는 것을 알고 있습니다. 이때는 바이트 스트림만 사용할 수 있습니다. 누가 더 효율적인가를 단순히 볼 수는 없습니다. 이것이 두 개의 데이터 스트림이 있는 이유라고 생각합니다.
작은 파일을 읽고 쓰는 데에는 거의 차이가 없습니다. 대용량 파일을 읽고 쓰려면 Buffer가 더 좋습니다. 하드 디스크에 대한 다중 읽기 및 쓰기의 경우 좋은 캐싱 메커니즘이 더 빠를 수 있습니다. 예를 들어 60GB 파일의 경우 일괄적으로(또는 별도의 행에서) 여러 번 읽고 써야 합니다. 둘째, 문자 또는 바이트를 처리하시겠습니까? 필요에 따라 선택하십시오.
모든 IO 작업은 바이트를 통해 완료됩니다. Java의 InputStream 및 OutputStream에는 바이트 작업 메서드만 있고 문자열 메서드는 없습니다. 문자열을 읽고 쓸 수 있는 모든 스트림 캡슐화된 객체는 상위 계층에 구현되어 사용하기 편리합니다.
사용할 스트림의 구체적인 선택과 이들 사이의 효율성은 모두 특정 시나리오와 기능의 목적에 따라 다릅니다.
위의 두 예에서는 BufferedWriter 및 BufferedReader의 내부 구현이나 버퍼 버퍼링의 바이트 구현을 사용하도록 선택한다는 점을 제외하면 효과는 정확히 동일합니다.
Java는 오픈 소스이므로 더 많은 소스 코드를 읽고 내부 원칙과 구현에 익숙해지는 것이 좋습니다.
둘 사이의 차이점은 바이트 스트림은 텍스트 파일과 일부 바이너리 데이터(사진, 비디오, 개체)와 같은 비텍스트 파일을 모두 작동할 수 있는 반면, 문자 스트림은 텍스트만 작동할 수 있다는 것입니다. 이는 두 가지 모두에 적용 가능한 상황이기도 합니다. 읽고 쓰는 데 사용할 데이터 스트림을 결정하는 방법은 읽고 쓰는 데이터 유형에 따라 다릅니다. 문자 스트림은 한 번에 2바이트의 유니코드 문자를 처리하고, 바이트 스트림은 한 번에 하나씩 처리한다는 것을 알고 있습니다. 이때는 바이트 스트림만 사용할 수 있습니다. 누가 더 효율적인가를 단순히 볼 수는 없습니다. 이것이 두 개의 데이터 스트림이 있는 이유라고 생각합니다.
작은 파일을 읽고 쓰는 데에는 거의 차이가 없습니다.
대용량 파일을 읽고 쓰려면 Buffer가 더 좋습니다. 하드 디스크에 대한 다중 읽기 및 쓰기의 경우 좋은 캐싱 메커니즘이 더 빠를 수 있습니다. 예를 들어 60GB 파일의 경우 일괄적으로(또는 별도의 행에서) 여러 번 읽고 써야 합니다.
둘째, 문자 또는 바이트를 처리하시겠습니까? 필요에 따라 선택하십시오.