29

ZIP、RAR、txt、CSV、docなどのファイルがあります。そこからByteArrayInputStreamを作成したいと思います。ApacheCommonsNet
からFTPClientを 介してFTPにファイルをアップロードするために使用しています。

誰かがそれを行う方法を知っていますか?

例えば:

String data = "hdfhdfhdfhd";
ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());

私のコード:

public static ByteArrayInputStream retrieveByteArrayInputStream(File file) {
    ByteArrayInputStream in;

    return in;     
}
4

5 に答える 5

52

FileUtils#readFileToByteArray(File)from Apache Commons IOを使用してから、 ByteArrayInputStreamusingByteArrayInputStream(byte[])コンストラクターを作成します。

public static ByteArrayInputStream retrieveByteArrayInputStream(File file) {
    return new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
}
于 2012-06-27T10:18:07.653 に答える
23

一般的な考え方は、ファイルはaFileInputStreamとaを生成するbyte[]というものByteArrayInputStreamです。どちらも実装されInputStreamているため、パラメータとして使用するすべてのメソッドと互換性がInputStreamあります。

もちろん、すべてのファイルの内容をにByteArrayInputStream入れることもできます。

  1. 完全なファイルをbyte[];に読み込みます。Javaバージョン>=7には、ファイルからすべてのデータを読み取るために呼び出される便利なメソッドが含まれています。readAllBytes
  2. ByteArrayInputStream現在メモリ内にあるファイルコンテンツの周囲を作成します。

これは非常に大きなファイルには最適なソリューションではない可能性があることに注意してください。すべてのファイルが同じ時点でメモリに保存されます。ジョブに適切なストリームを使用することが重要です。

于 2012-06-27T10:19:56.667 に答える
5

AByteArrayInputStreamInputStreamバイト配列のラッパーです。つまり、ファイルを完全に読み込んでから、コンストラクターbyte[]の1つを使用する必要があります。ByteArrayInputStream

で何をしているのか、もう少し詳しく教えていただけますByteArrayInputStreamか?あなたが達成しようとしていることを回避するためのより良い方法がある可能性があります。

編集:
アップロードにApache FTPClientを使用している場合は、が必要ですInputStream。あなたはこれを行うことができます;

String remote = "whatever";
InputStream is = new FileInputStream(new File("your file"));
ftpClient.storeFile(remote, is);

もちろん、入力ストリームを終了したら、忘れずに閉じてください。

于 2012-06-27T10:21:37.760 に答える
3

これは正確にはあなたが求めているものではありませんが、バイト単位でファイルを読み取るための高速な方法です。

File file = new File(yourFileName);
RandomAccessFile ra = new RandomAccessFile(yourFileName, "rw"):
byte[] b = new byte[(int)file.length()];
try {
    ra.read(b);
} catch(Exception e) {
    e.printStackTrace();
}

//Then iterate through b
于 2012-06-27T10:21:05.730 に答える
3

このコードは便利です。

private static byte[] readContentIntoByteArray(File file)
{
  FileInputStream fileInputStream = null;
  byte[] bFile = new byte[(int) file.length()];
  try
  {
     //convert file into array of bytes
     fileInputStream = new FileInputStream(file);
     fileInputStream.read(bFile);
     fileInputStream.close();
  }
  catch (Exception e)
  {
     e.printStackTrace();
  }
  return bFile;
}

参照: http: //howtodoinjava.com/2014/11/04/how-to-read-file-content-into-byte-array-in-java/

于 2015-09-01T02:14:42.697 に答える