Saya hanya ingin mengubah a FileInputStream
menjadi an InputStream
, bagaimana cara melakukannya?
misalnya
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
java
fileinputstream
ranjan
sumber
sumber
File
kelas keInputStream
. Hasil edit Anda menunjukkan bahwa itulah yang diminta penulis (setidaknya sebagian), dan itu tidak benar.Jawaban:
Anda biasanya pertama-tama membaca dari aliran input dan kemudian menutupnya. Anda dapat menggabungkan FileInputStream di InputStream (atau Reader) lain. Ini akan ditutup secara otomatis ketika Anda menutup aliran / pembaca pembungkus.
Jika ini adalah metode yang mengembalikan InputStream ke pemanggil, maka tanggung jawab pemanggil untuk menutup streaming setelah selesai. Jika Anda menutupnya dengan metode Anda, penelepon tidak akan dapat menggunakannya.
Untuk menjawab beberapa komentar Anda ...
Untuk mengirim konten InputStream ke konsumen jarak jauh, Anda akan menulis konten InputStream ke OutputStream, lalu menutup kedua aliran.
Konsumen jarak jauh tidak tahu apa-apa tentang objek aliran yang telah Anda buat. Dia baru saja menerima konten, dalam InputStream yang akan dia buat, baca, dan tutup.
sumber
sumber
sumber
FileInputStream adalah inputStream.
Tentu saja, ini tidak akan melakukan apa yang Anda inginkan ; aliran yang Anda kembalikan telah ditutup. Cukup kembalikan FileInputStream dan selesaikan. Kode panggilan harus menutupnya.
sumber
fis
meskipun saya tidak yakin tentang mengembalikan aliran tertutup.fis
- Anda juga menutupis
return FileInputStream("c://filename");
dalam metode yang jenis kembaliannya adalahInputStream
Jika Anda menggabungkan satu aliran ke aliran lain, Anda tidak menutup aliran perantara, dan sangat penting: Anda tidak menutupnya sebelum menyelesaikan menggunakan aliran luar. Karena Anda juga akan menutup aliran luar.
sumber