Java 如何获取ByteArrayInputStream并将其内容保存为文件系统上的文件

Java 如何获取ByteArrayInputStream并将其内容保存为文件系统上的文件,java,file-io,bytearrayinputstream,Java,File Io,Bytearrayinputstream,我有一个以ByteArrayInputStream形式出现的图像。我想将其保存到文件系统中的某个位置 我一直在兜圈子,你能帮我一下吗。你可以使用以下代码: ByteArrayInputStream input = getInputStream(); FileOutputStream output = new FileOutputStream(outputFilename); int DEFAULT_BUFFER_SIZE = 1024; byte[] buffer = new byte[DEF

我有一个以ByteArrayInputStream形式出现的图像。我想将其保存到文件系统中的某个位置


我一直在兜圈子,你能帮我一下吗。

你可以使用以下代码:

ByteArrayInputStream input = getInputStream();
FileOutputStream output = new FileOutputStream(outputFilename);

int DEFAULT_BUFFER_SIZE = 1024;
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
long count = 0;
int n = 0;

n = input.read(buffer, 0, DEFAULT_BUFFER_SIZE);

while (n >= 0) {
   output.write(buffer, 0, n);
   n = input.read(buffer, 0, DEFAULT_BUFFER_SIZE);
}

如果您已经在使用Apache,则可以使用:

 IOUtils.copy(byteArrayInputStream, new FileOutputStream(outputFileName));
ByteArrayInputStream=;
字节[]字节=新字节[1024];
stream.read(字节);
BufferedWriter=newbufferedwriter(newfilewriter(新文件(“文件位置”)));
write(新字符串(字节));
writer.close();

与FileWriter相比,缓冲Writer将提高文件写入性能。

感谢Gaurav,我现在将尝试使用它。写入器用于字符文件,而不是二进制文件。我不敢相信这项任务有多么深奥。这很好,但我发现我需要在调用copy之外创建FileoutputStream,以便关闭它。一些ioutil会刷新缓冲区,但我遇到了一个问题,即输出文件有时无法打开。我在FileOutputStream上添加了对close()的调用后,效果非常好。总的来说,我很高兴我找到了IOUtils的东西,我也一直在用它做其他的事情。
 IOUtils.copy(byteArrayInputStream, new FileOutputStream(outputFileName));
    ByteArrayInputStream stream  = <<Assign stream>>;
    byte[] bytes = new byte[1024];
    stream.read(bytes);
    BufferedWriter writer = new BufferedWriter(new FileWriter(new File("FileLocation")));
    writer.write(new String(bytes));
    writer.close();