Programming

FileInputStream를 InputStream로 변환하는 방법?

procodes 2020. 7. 21. 22:10
반응형

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을 반환하고 완료하십시오. 호출 코드는이를 닫아야합니다.


한 스트림을 다른 스트림으로 감싸면 중간 스트림을 닫지 않고 매우 중요합니다. 외부 스트림 사용을 마치기 전에 닫지 않습니다. 외부 스트림도 닫을 것이기 때문입니다.

참고 URL : https://stackoverflow.com/questions/11100677/how-to-convert-fileinputstream-to-inputstream

반응형