Zip、RAR、txt、CSV、docなどの任意のファイルを使用できます。ByteArrayInputStreamを作成したいと思います。
Apache Commons NetからFTPClientを介してFTPにファイルをアップロードするために使用しています。
その方法を知っている人はいますか?
例えば:
String data = "hdfhdfhdfhd";
ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
私のコード:
public static ByteArrayInputStream retrieveByteArrayInputStream(File file) {
ByteArrayInputStream in;
return in;
}
FileUtils#readFileToByteArray(File)
from Apache Commons IO 、および次に、 ByteArrayInputStream(byte[])
コンストラクターを使用してByteArrayInputStream
を作成します。
public static ByteArrayInputStream retrieveByteArrayInputStream(File file) {
return new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
}
一般的な考え方は、ファイルがFileInputStream
とbyte[]
a ByteArrayInputStream
を生成するというものです。両方ともInputStream
を実装するため、InputStream
をパラメーターとして使用するすべてのメソッドと互換性があります。
もちろん、すべてのファイルの内容をByteArrayInputStream
に入れることもできます:
byte[]
に読み込みます; Java version> = 7には readAllBytes
と呼ばれる便利なメソッド が含まれ、ファイルからすべてのデータを読み取ります。ByteArrayInputStream
を作成します。これは現在メモリ内にあります。これは非常に大きなファイルには最適なソリューションではないことに注意してください-すべてのファイルは同じ時点でメモリに保存されます。ジョブに適切なストリームを使用することが重要です。
ByteArrayInputStream
は、バイト配列のInputStream
ラッパーです。つまり、ファイルをbyte[]
に完全に読み取ってから、ByteArrayInputStream
コンストラクターのいずれかを使用する必要があります。
ByteArrayInputStream
で実行していることの詳細を教えてください。あなたが達成しようとしていることを回避するより良い方法がある可能性があります。
編集:
Apache FTPClientを使用してアップロードする場合は、InputStream
が必要です。あなたはこれを行うことができます;
String remote = "whatever";
InputStream is = new FileInputStream(new File("your file"));
ftpClient.storeFile(remote, is);
もちろん、入力ストリームを終了したら、忘れずに入力ストリームを閉じてください。
これはまさにあなたが求めているものではありませんが、バイト単位でファイルを高速に読み取る方法です。
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
このコードは便利です。
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/