简单的方法将Java InputStream的内容写入OutputStream
今天我惊讶地发现,我无法找到任何简单的方法将InputStream
的内容写入到Java中的OutputStream
中。 显然,字节缓冲区代码不难写,但我怀疑我只是错过了一些可以让我的生活更轻松(代码更清晰)的东西。
所以,如果InputStream
in
和OutputStream
out
,是否有更简单的方法来编写以下内容?
byte[] buffer = new byte[1024];
int len = in.read(buffer);
while (len != -1) {
out.write(buffer, 0, len);
len = in.read(buffer);
}
正如WMR提到的,来自Apache的org.apache.commons.io.IOUtils
有一个名为copy(InputStream,OutputStream)
,它正是您要查找的内容。
所以你有了:
InputStream in;
OutputStream out;
IOUtils.copy(in,out);
in.close();
out.close();
...在你的代码中。
你有避免IOUtils
的原因吗?
如果您使用Java 7,则文件(在标准库中)是最好的方法:
/* You can get Path from file also: file.toPath() */
Files.copy(InputStream in, Path target)
Files.copy(Path source, OutputStream out)
编辑:当你从文件创建一个InputStream或OutputStream时,它当然很有用。 使用file.toPath()
从文件获取路径。
要写入现有文件(例如使用File.createTempFile()
创建的文件),您需要传递REPLACE_EXISTING
复制选项(否则引发FileAlreadyExistsException
):
Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING)
我认为这会起作用,但要确保测试它......微小的“改进”,但在可读性方面可能会有点成本。
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
链接地址: http://www.djcxy.com/p/78459.html
上一篇: Easy way to write contents of a Java InputStream to an OutputStream