[java] FileInputStream을 InputStream으로 변환하는 방법? [닫은]

난 그냥 변환하고 싶어 FileInputStreamInputStream내가 그렇게 할 수있는 방법?

예 :

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();



답변

일반적으로 먼저 입력 스트림에서 읽은 다음 닫습니다. FileInputStream을 다른 InputStream (또는 Reader)으로 래핑 할 수 있습니다. 래핑 스트림 / 리더를 닫으면 자동으로 닫힙니다.

이것이 호출자에게 InputStream을 반환하는 메서드 인 경우, 스트림이 끝났을 때 스트림을 닫는 것은 호출자의 책임입니다. 메서드에서 닫으면 호출자가 사용할 수 없습니다.

귀하의 의견에 답하려면 …

콘텐츠 InputStream을 원격 소비자에게 보내려면 InputStream의 콘텐츠를 OutputStream에 쓴 다음 두 스트림을 모두 닫습니다.

원격 소비자는 사용자가 만든 스트림 개체에 대해 알지 못합니다. 그는 자신이 만들고 읽고 닫을 InputStream에서 콘텐츠를 수신합니다.


답변

InputStream is;

try {
    is = new FileInputStream("c://filename");

    is.close();
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

return is;


답변

InputStream is = new FileInputStream("c://filename");
return is;


답변

FileInputStream inputStream입니다.

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = fis;
fis.close();
return is;

물론 이것은 당신이 원하는 것을하지 않을 것입니다 . 반환하는 스트림이 이미 닫혔습니다. FileInputStream을 반환하고 완료하십시오. 호출 코드가이를 닫아야합니다.


답변

한 스트림을 다른 스트림으로 래핑하는 경우 중간 스트림을 닫지 않고 매우 중요합니다. 외부 스트림 사용을 완료하기 전에 닫지 마십시오. 외부 스트림도 닫을 것이기 때문입니다.


답변