java.io.FileInputStream에서 사용하는 Buffer의 역할

조회수 859회
    int bytesAvailable;
    FileInputStream fileInputStream = new FileInputStream(new File("somewhere"));
    bytesAvailable = fileInputStream.available();
    int maxBufferSize = 100;
    int bufferSize = Math.min(bytesAvailable, maxBufferSize);
    byte[] buffer = new byte[bufferSize];

    // read file and write it into form...
    int bytesRead = fileInputStream.read(buffer, 0, bufferSize);

HttpURLConnection 을 공부하다가 이런 부분이 있는데, 검색을 해봐도 확실한 답이 나오지 않아 질문합니다!

여기서 byteAvailable이 뜻하는 것과 FileInputStream에서의 buffer의 역할이 궁금합니다!!

1 답변

  • 스트림 클래스에서 보통 available 메서드는 읽을 수 있는 데이터의 개수를 의미하고 buffer 는 데이터가 담기는 변수를 의미합니다.

    // 스트림에서 읽을 수 있는 데이터의 개수를 확인합니다.
    bytesAvailable = fileInputStream.available();
    
    // 스트림에서 읽을 수 있는 데이터 개수와
    // 내가 설정해둔 최대로 읽을 수 있는 개수를 비교해
    // 둘 중 작은 개수를 버퍼사이즈로 정합니다.
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    // 데이터를 담을 배열 변수 설정
    buffer = new byte[bufferSize];
    
    // bytesRead : 얼만큼 읽었나 결과를 받습니다.
    // read() : buffer 배열의 0번째 index 부터 bufferSize 만큼의
    // 데이터를 buffer 배열에 담습니다.
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)