をに変換したいのですがFileInputStream
、InputStream
どうすればよいですか?
例えば
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
をに変換したいのですがFileInputStream
、InputStream
どうすればよいですか?
例えば
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = ?;
fis.close();
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;
InputStream is = new FileInputStream("c://filename");
return is;
FileInputStreamは入力ストリームです。
FileInputStream fis = new FileInputStream("c://filename");
InputStream is = fis;
fis.close();
return is;
もちろん、これはあなたがやりたいことにはなりません。返されたストリームは既に閉じられています。FileInputStream を返すだけで完了です。呼び出し元のコードはそれを閉じる必要があります。
通常、最初に入力ストリームから読み取ってから閉じます。FileInputStream を別の InputStream (または Reader) でラップできます。ラッピング ストリーム/リーダーを閉じると、自動的に閉じられます。
これが呼び出し元に InputStream を返すメソッドである場合、ストリームの処理が終了したときにストリームを閉じるのは呼び出し元の責任です。メソッドでそれを閉じると、呼び出し元はそれを使用できなくなります。
あなたのコメントのいくつかに答えるために...
内容の InputStream をリモート コンシューマーに送信するには、InputStream の内容を OutputStream に書き込み、両方のストリームを閉じます。
リモート コンシューマーは、作成したストリーム オブジェクトについて何も知りません。彼は、彼が作成、読み取り、閉じる InputStream でコンテンツを受け取るだけです。
あるストリームを別のストリームにラップする場合、中間ストリームを閉じないでください。これは非常に重要です。外側のストリームの使用を終了する前にそれらを閉じないでください。外側のストリームも閉じるためです。