从 ByteArrayOutputStream 创建文件

Posted

技术标签:

【中文标题】从 ByteArrayOutputStream 创建文件【英文标题】:Create a file from a ByteArrayOutputStream 【发布时间】:2013-07-03 12:52:11 【问题描述】:

如果我只有ByteArrayOutputStream,谁能解释我如何获取文件对象。如何从ByteArrayOutputStream 创建文件?

【问题讨论】:

【参考方案1】:

您可以使用FileOutputStreamwriteTo 方法来做到这一点。

ByteArrayOutputStream byteArrayOutputStream = getByteStreamMethod();
try(OutputStream outputStream = new FileOutputStream("thefilename")) 
    byteArrayOutputStream.writeTo(outputStream);

来源:"Creating a file from ByteArrayOutputStream in Java." on Code Inventions

【讨论】:

@MarkusMikkolainen 是的 .. 很明显 :) 或者使用 java 7 try with resources 语句彻底摆脱 finally 块;)***.com/questions/2016299/… 兄弟,如果我没有 "thefilename" 怎么办,我有那个 excel 的字节 [] 流,那该怎么办?【参考方案2】:

您可以为此使用 FileOutputStream。

FileOutputStream fos = null;
try 
    fos = new FileOutputStream(new File("myFile")); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    // Put data in your baos

    baos.writeTo(fos);
 catch(IOException ioe) 
    // Handle exception here
    ioe.printStackTrace();
 finally 
    fos.close();

【讨论】:

您的代码在try 块中无法与fos 一起使用。此外,new File() 不是必需的。 他添加了“new File()”是件好事。读者更容易知道有可用的 File 构造函数。 android 好像需要这个。 可以在 try-with-resources() 中使用 fos 来改进并删除 finally

以上是关于从 ByteArrayOutputStream 创建文件的主要内容,如果未能解决你的问题,请参考以下文章

来自 OutputStream 的 ByteArrayOutputStream

在Java中将DOM Document转换为ByteArrayOutputStream时的字符编码问题

ByteArrayOutputStream 类源码分析

字节数组流ByteArrayInputStream&ByteArrayOutputStream

在写入时从 ByteArrayOutputStream 读取

用ByteArrayOutputStream解决IO流乱码问题