在Java中将bytes[]转换为“文件”

8

我有一个字节的数组

bytes[] doc

我怎样才能用这些字节创建一个new File实例?

1
你是在问如何将二进制文件写入文件系统吗? - Dawood ibn Kareem
不需要,只是在内存中的File实例。我不需要将其写入文件系统。 - Bob
3
@Bob:内存中的文件并不存在。文件在文件系统上。File类的一个实例不包含任何字节,仅仅是一个文件路径。从文件中读取数据总是会从文件系统中读取,而不是从内存中的字节数组中读取。如果你想要从内存中的字节数组中读取数据,则应该使用ByteArrayInputStream类。如果不是,请告诉我们你实际想要实现的功能。 - JB Nizet
好的,那么字节是什么?预期的“文件”中哪些字段反映在这些字节中,以及如何反映?或者您是否使用标准序列化机制来表示您的“文件”?请澄清问题。 - Dawood ibn Kareem
1
这个问题的评论非常清楚地表明,OP想要的并不是那个其他问题所问的。对于任何仔细阅读的人来说,显然这不是一个重复的问题。为什么会被关闭? - Dawood ibn Kareem
显示剩余4条评论
3个回答

22
 try (FileOutputStream fileOuputStream = new FileOutputStream("filename")){
    fileOuputStream.write(byteArray);
 }

2
最好在finally块中关闭,或者更好的是使用try-with-resources语句。如果发生异常,您的代码将泄漏资源。 - JB Nizet
1
但是OP写道:"不,只需要在内存中创建一个File实例。我不需要将它写入文件系统。" - Peter Mortensen

15

试试这个:

Files.write(Paths.get("filename"), bytes);

1
但是OP写道:"不,只需要在内存中创建一个File实例。我不需要将它写入文件系统。" - Peter Mortensen

5
一个简单的程序,将一个字节数组写入文件中。
import java.io.File;
import java.io.FileOutputStream;

public class BytesToFile {

    public static void main(String[] args) {

        byte[] demBytes = null; // Instead of null, specify your bytes here.

        File outputFile = new File("LOCATION TO FILE");

        try ( FileOutputStream outputStream = new FileOutputStream(outputFile); ) {

            outputStream.write(demBytes);  // Write the bytes and you're done.

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

注意:try-catch语句要求Java版本>=1.7。记得将字节从null更改为对应于您的字节数组。


2
大约在您发布这篇文章的10分钟前,OP发布了一条评论解释说这不是他想要的。 - Dawood ibn Kareem
2
花了10分钟在iPad上写的:( 我猜其他人会发现它有用。 - GabeTheApe
1
但是OP写道:"不,只需要在内存中创建一个File实例。我不需要将它写入文件系统。" - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接