用Java将字节[]写入文件

用Java将字节[]写入文件,java,arrays,file,file-io,Java,Arrays,File,File Io,如何在Java中将字节数组转换为文件 byte[] objFileBytes, File objFile 文件对象不包含文件的内容。它只是指向硬盘(或其他存储介质,如SSD、USB驱动器、网络共享)上文件的指针。所以我想你想要的是把它写到硬盘上 您必须使用JavaAPI中的一些类来编写文件 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(yourFile)); bos.write(fileByte

如何在Java中将字节数组转换为文件

byte[] objFileBytes, File objFile
文件对象不包含文件的内容。它只是指向硬盘(或其他存储介质,如SSD、USB驱动器、网络共享)上文件的指针。所以我想你想要的是把它写到硬盘上

您必须使用JavaAPI中的一些类来编写文件

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(yourFile));
bos.write(fileBytes);
bos.flush();
bos.close();
您还可以使用Writer而不是OutputStream。使用编写器将允许您编写文本(字符串、字符[])

因为您说过希望将所有内容都保存在内存中,而不希望编写任何内容,所以可以尝试使用
ByteArrayInputStream
。这将模拟InputStream,您可以将其传递给大多数类

ByteArrayInputStream bais = new ByteArrayInputStream(yourBytes);

使用FileOutputStream

FileOutputStream fos = new FileOutputStream(objFile);
fos.write(objFileBytes);
fos.close();
好的,你自找的:

File file = new File("myfile.txt");

// convert File to byte[]
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(file);
bos.close();
oos.close();
byte[] bytes = bos.toByteArray();

// convert byte[] to File
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
File fileFromBytes = (File) ois.readObject();
bis.close();
ois.close();

System.out.println(fileFromBytes);


但这是毫无意义的。请指定您试图实现的目标。

请参阅。看起来除了将内容保存到SD文件上的(临时)中,您可能没有其他选择,以便能够在pdf查看器中显示它。

文件对象为空?我不想任何东西被保存在磁盘上。。。在内存中是可以的,所以如何将字节数组转换为文件objectFile只是文件和目录路径名的抽象表示。它不包含文件的内容。而且根据定义,
文件
不能在内存中,因此您不能做您想做的事情。不管怎么说,你为什么要这么做,这没有多大意义?如果你解释一下,也许人们可以给出其他建议。我正在开发android。。。我有一个文件保存在磁盘加密和解锁加密,所以我得到了字节数组,所以我想将它们转换为文件,以显示pdf查看器中的pdf文件,但没有保存在磁盘中的文件没有加密这是完全不同的。我不知道这是否可行。文件对象为空?我不想任何东西被保存在磁盘上。。。在内存中是可以的,所以如何将字节数组转换为文件对象我得到了这个java.io.IOException:open失败:在编写BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(yourFile))时,android应用程序中的EACCES(权限被拒绝)@SanketThakkar:您可能没有在该位置写入文件的写入权限(权限)。请尝试另一个位置。“将字节数组转换为文件对象”除了要将字节写入文件之外,在任何其他方面都没有意义。关于如何做到这一点,您至少有3个不同的答案。这就是你想要的吗?否则,请澄清。我正在开发android。。。我有一个文件保存在磁盘加密和解锁加密,所以我得到了字节数组,所以我想将它们转换为文件,以显示pdf查看器中的pdf文件,但没有保存在磁盘中的文件没有加密好,这是一个完全不同的事情那么。实际上,您希望从MemoryFile()之类的东西启动pdf查看器。不知道你会怎么做,也不知道如何显示pdf。您是否有一些代码或信息可以添加到如何实际调用pdf查看器中?您使用的是哪种查看器?请更改问题和标题以反映您正在询问与PDF相关的内容。这个问题现在看起来很困惑。-1这个问题与你想知道的完全无关。创建一个新问题,并询问“如何在Android上从内存中的字节呈现PDF?”他解释了他真正想要什么,请查看commentsTnx,在阅读我得出结论认为他太笨而无法提供帮助后。我的意思是,他至少需要意识到他试图解决的问题,并提供相关信息,事实并非如此。我为落选感到难过,因为我是这里少数几个回答问题的人之一。这个问题与我无关PDF@MikeKeskinov阅读提问者的评论。这一切都和PDF有关。然后我投票反对这个问题。我在尝试查找如何将字节[]保存到文件的信息时发现了这个问题。问题本身并没有提到PDF。需要更改问题和标题,否则会造成混乱。
public void writeToFile(byte[] data, String fileName) throws IOException{
  FileOutputStream out = new FileOutputStream(fileName);
  out.write(data);
  out.close();
}
File file = new File("myfile.txt");

// convert File to byte[]
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(file);
bos.close();
oos.close();
byte[] bytes = bos.toByteArray();

// convert byte[] to File
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis);
File fileFromBytes = (File) ois.readObject();
bis.close();
ois.close();

System.out.println(fileFromBytes);