3

入力としてjava.io.Fileを必要とするAPIを使用していますが、APIにバイト配列を送信したいだけです。ディスクからではなくバイト配列から読み取るFileオブジェクトを作成する方法はありますか?

4

4 に答える 4

6

AFileは何も読みません。これは、オペレーティングシステム(または仮想ファイルなど)内のファイル(またはディレクトリ)オブジェクトを表します。そこから読み取るには、APIが独自に実行するリーダーまたはストリームを作成する必要があります。APIがReaderまたはInputStreamを渡すためのメソッドを提供していない場合は、運が悪いです。

于 2012-06-11T14:46:40.867 に答える
1

一時ファイルを開くことができます:Javaで一時ファイルを開く

次に、byte []を取得し、OutputStream / Writerを介してすべてを一時ファイルに書き込むと、必要なものが得られるはずです。次に、ディスク上にファイルを作成せずにファイルを渡すことができます。

于 2012-06-11T15:39:13.627 に答える
0

JavaはInputStream(またはOutpusStream)アプローチで動作します。java.io.Fileすでに強制しすぎている場合、クラスFileは読み取りまたは書き込みが可能なものではありません。ファイルシステムのエントリを表すだけです(そこから、関連する入力ストリームと出力ストリームを取得できます)。

したがって、ジェネリックを受け入れるメソッドが必要ですInputStream。APIがFileオブジェクトのみをサポートしている場合、それは明らかに不十分に設計されています(または、許可されていない方法でそれらを使用しようとしています)。

于 2012-06-11T14:47:49.333 に答える
0
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がやりたくないことであることに気づきました。したがって、この答えは実際には役に立ちません...

于 2012-06-11T14:48:47.583 に答える