Jak przekonwertować FileInputStream na InputStream? [zamknięte]

Chcę tylko zamienić {[1] } na InputStream, Jak mogę to zrobić?

E. g

FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?; 
fis.close();
Author: Line, 2012-06-19

5 answers

Zazwyczaj najpierw czytasz ze strumienia wejściowego, a następnie zamykasz go. Możesz zawinąć strumień plików w inny strumień wejściowy (lub czytnik). Zostanie on automatycznie zamknięty po zamknięciu strumienia/czytnika owijania.

Jeśli jest to metoda zwracająca strumień wejściowy do wywołującego, to zadaniem wywołującego jest zamknięcie strumienia po jego zakończeniu. Jeśli zamkniesz go w swojej metodzie, rozmówca nie będzie mógł go użyć.

Aby odpowiedzieć na niektóre z Twoich komentarze...

Aby wysłać zawartość strumienia wejściowego do zdalnego konsumenta, należy zapisać zawartość strumienia wejściowego do strumienia wyjściowego, a następnie zamknąć oba strumienie.

Zdalny konsument nie wie nic o obiektach strumieniowych, które utworzyłeś. Po prostu otrzymuje treść, w strumieniu wejściowym, który stworzy, odczyta i zamknie.

 6
Author: sudocode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-19 12:37:08
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;
 127
Author: Kumar Vivek Mitra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-21 10:51:34
InputStream is = new FileInputStream("c://filename");
return is;
 49
Author: Sumit Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-19 12:17:38

FileInputStream jest strumieniem wejściowym.

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

Oczywiście, to nie zrobi tego, co chcesz, aby to zrobić ; strumień, który zwracasz, został już zamknięty. Po prostu zwróć strumień plików i zakończ to. Kod powinien go zamknąć.

 35
Author: Joeri Hendrickx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-16 09:26:33

Jeśli owijasz jeden strumień w drugi, nie zamykasz strumieni pośrednich, a bardzo ważne: nie zamykasz ich przed zakończeniem korzystania z zewnętrznych strumieni. Bo zamknąłbyś też zewnętrzny strumień.

 2
Author: user unknown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-19 12:18:42