itr*_*tro 26 java arrays bytebuffer bytearrayinputstream
我有一个文件,可以是任何东西,如ZIP,RAR,TXT,CSV,doc等.我想从它创建一个ByteArrayInputStream.
我正在使用它通过FTPClient从Apache Commons Net 上传文件到FTP .
有谁知道怎么做?
例如:
String data = "hdfhdfhdfhd";
ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
Run Code Online (Sandbox Code Playgroud)
我的代码:
public static ByteArrayInputStream retrieveByteArrayInputStream(File file) {
ByteArrayInputStream in;
return in;
}
Run Code Online (Sandbox Code Playgroud)
npe*_*npe 39
使用FileUtils#readFileToByteArray(File)来自Apache Commons IO,然后ByteArrayInputStream使用ByteArrayInputStream(byte[])构造函数创建.
public static ByteArrayInputStream retrieveByteArrayInputStream(File file) {
return new ByteArrayInputStream(FileUtils.readFileToByteArray(file));
}
Run Code Online (Sandbox Code Playgroud)
Maa*_*wes 17
一般的想法是文件会产生a FileInputStream和byte[]a ByteArrayInputStream.两者都实现,InputStream因此它们应该与任何InputStream用作参数的方法兼容.
将所有文件内容放入a ByteArrayInputStream中当然可以完成:
byte[]; Java版本> = 7包含一个调用readAllBytes来读取文件中所有数据的便捷方法 ;ByteArrayInputStream文件内容,现在在内存中.请注意,这可能不是非常大的文件的最佳解决方案 - 所有文件将在同一时间点存储在内存中.使用正确的流来完成工作非常重要.
A ByteArrayInputStream是InputStream字节数组的包装器.这意味着您必须将文件完全读入a byte[],然后使用其中一个ByteArrayInputStream构造函数.
你能否详细说明你在做什么ByteArrayInputStream?它可能有更好的方法来解决你想要实现的目标.
编辑:
如果您使用Apache FTPClient上传,您只需要一个InputStream.你可以这样做;
String remote = "whatever";
InputStream is = new FileInputStream(new File("your file"));
ftpClient.storeFile(remote, is);
Run Code Online (Sandbox Code Playgroud)
您当然应该记得在完成输入流后关闭输入流.