Файл для InputStream

Я просто хочу преобразовать File в InputStream, как я могу это сделать?

e.g

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

Как преобразовать FileInputStream в InputStream, так что я могу закрыть fis или есть какой-либо другой способ преобразования File в InputStream?

Ответ 1

Обычно вы сначала читаете из входного потока, а затем закрываете его. Вы можете обернуть FileInputStream в другой InputStream (или Reader). Он будет автоматически закрыт при закрытии обтекающего потока/считывателя.

Если это метод, возвращающий InputStream вызывающему, то ответственность за закрытие потока завершается с помощью вызывающего. Если вы закроете его в своем методе, вызывающий абонент не сможет его использовать.

Чтобы ответить на некоторые ваши комментарии...

Чтобы отправить содержимое InputStream удаленному пользователю, вы должны записать содержимое InputStream в OutputStream, а затем закрыть оба потока.

Удаленный потребитель ничего не знает о созданных вами потоковых объектах. Он просто получает контент в InputStream, который он будет создавать, читать и закрывать.

Ответ 2

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;

Ответ 3

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

Ответ 4

FileInputStream - это inputStream.

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

Конечно, это не будет делать то, что вы хотите сделать; поток, который вы возвращаете, уже закрыт. Просто верните FileInputStream и сделайте это. Код вызова должен закрыть его.

Ответ 5

Если вы переносите один поток в другой, вы не закрываете промежуточные потоки и очень важны: вы не закрываете их до окончания использования внешних потоков. Потому что вы тоже закрываете внешний поток.