Я просто хочу преобразовать a FileInputStream
в InputStream
, как я могу это сделать?
например
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
java
fileinputstream
Ranjan
источник
источник
File
класса вInputStream
. Ваше редактирование предполагает, что автор просит именно об этом (по крайней мере, частично), и это неправильно.Ответы:
Обычно вы сначала читаете из входного потока, а затем закрываете его. Вы можете обернуть FileInputStream в другой InputStream (или Reader). Он будет автоматически закрыт, когда вы закроете поток / ридер упаковки.
Если это метод, возвращающий InputStream вызывающей стороне, то ответственность за закрытие потока по завершении с ним лежит на вызывающей стороне. Если вы закроете его в своем методе, вызывающий не сможет его использовать.
Чтобы ответить на некоторые ваши комментарии ...
Чтобы отправить содержимое InputStream удаленному потребителю, вы должны записать содержимое InputStream в OutputStream, а затем закрыть оба потока.
Удаленный потребитель ничего не знает о созданных вами объектах потока. Он просто получает контент в InputStream, который он создаст, прочитает и закроет.
источник
источник
источник
FileInputStream - это inputStream.
Конечно, это не будет делать то, что вы хотите ; поток, который вы возвращаете, уже закрыт. Просто верните FileInputStream и покончите с этим. Вызывающий код должен закрыть его.
источник
fis
хотя я не уверен в возвращении закрытого потока.fis
- то и закрытьis
return FileInputStream("c://filename");
метода с типом возвращаемого значенияInputStream
Если вы переносите один поток в другой, вы не закрываете промежуточные потоки, и это очень важно: вы не закрываете их до завершения использования внешних потоков. Потому что вы бы тоже закрыли внешний поток.
источник