入力としてjava.io.Fileを必要とするAPIを使用していますが、APIにバイト配列を送信したいだけです。ディスクからではなくバイト配列から読み取るFileオブジェクトを作成する方法はありますか?
4 に答える
AFile
は何も読みません。これは、オペレーティングシステム(または仮想ファイルなど)内のファイル(またはディレクトリ)オブジェクトを表します。そこから読み取るには、APIが独自に実行するリーダーまたはストリームを作成する必要があります。APIがReaderまたはInputStreamを渡すためのメソッドを提供していない場合は、運が悪いです。
一時ファイルを開くことができます:Javaで一時ファイルを開く
次に、byte []を取得し、OutputStream / Writerを介してすべてを一時ファイルに書き込むと、必要なものが得られるはずです。次に、ディスク上にファイルを作成せずにファイルを渡すことができます。
JavaはInputStream
(またはOutpusStream
)アプローチで動作します。java.io.File
すでに強制しすぎている場合、クラスFile
は読み取りまたは書き込みが可能なものではありません。ファイルシステムのエントリを表すだけです(そこから、関連する入力ストリームと出力ストリームを取得できます)。
したがって、ジェネリックを受け入れるメソッドが必要ですInputStream
。APIがFile
オブジェクトのみをサポートしている場合、それは明らかに不十分に設計されています(または、許可されていない方法でそれらを使用しようとしています)。
String strFilePath = "filePath";
byte[] writeBytes = ...;
try {
FileOutputStream fos = new FileOutputStream(strFilePath);
fos.write(byteArray);
fos.close();
} catch(FileNotFoundException ex) {
// handle FileNotFoundException here
} catch(IOException ioe) {
// handle IOException here
}
編集:通常、私はコードを与えるだけのファンではありませんが、このストリーミング全体が私をかなり混乱させていたので、ここに解決策があります;)。
EDIT2:わかりました、これはまさに、OPがやりたくないことであることに気づきました。したがって、この答えは実際には役に立ちません...