Eu só quero converter a FileInputStream
em InputStream
, como posso fazer isso?
por exemplo
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
java
fileinputstream
Ranjan
fonte
fonte
File
aula paraInputStream
. Sua edição sugere que é isso que o autor está pedindo (pelo menos em parte), e não está certo.Respostas:
Normalmente, você primeiro leria o fluxo de entrada e, em seguida, o fecharia. Você pode envolver o FileInputStream em outro InputStream (ou Leitor). Ele será fechado automaticamente quando você fechar o fluxo / leitor de empacotamento.
Se este for um método que retorna um InputStream para o chamador, é responsabilidade do chamador fechar o fluxo quando terminar com ele. Se você fechá-lo em seu método, o chamador não poderá usá-lo.
Para responder a alguns de seus comentários ...
Para enviar o conteúdo de InputStream a um consumidor remoto, você deve gravar o conteúdo de InputStream em um OutputStream e, em seguida, fechar os dois fluxos.
O consumidor remoto não sabe nada sobre os objetos de fluxo que você criou. Ele apenas recebe o conteúdo, em um InputStream que ele irá criar, ler e fechar.
fonte
fonte
fonte
FileInputStream é um inputStream.
Claro, isso não fará o que você deseja ; o stream que você devolve já foi fechado. Basta retornar o FileInputStream e pronto. O código de chamada deve fechá-lo.
fonte
fis
embora eu não tenha certeza sobre como retornar um riacho fechado.fis
- você também fechais
return FileInputStream("c://filename");
no método cujo tipo de retorno éInputStream
Se você envolver um fluxo em outro, você não fecha os fluxos intermediários, e muito importante: você não os fecha antes de terminar de usar os fluxos externos. Porque você também fecharia o fluxo externo.
fonte