Java - 将字节数组或字符串转换为(虚拟)文件

标签 java file bytearray inputstream

<分区>

简而言之:我想将一个字节数组或字符串转换成一个 File 对象,这样我就可以将这个 File 对象用作一个方法的参数,该方法的签名是我无法改变。我想在不接触驱动器的情况下在内存中实现这​​一点。

我读了很多similar questions在这里,包括有关使用 File.createTempFile 的建议,但我觉得我们仍然在创建物理文件,即使它只是临时的?

完整:我正在帮助完成一个非常复杂的数据恢复项目。我们现在有一个超过 400GB 的磁盘镜像,它是 2MB 部分的集合。我要恢复的一些文件从一个开始,到另一个 2MB 的部分结束。我们有一个我们见过的开头和结尾的 list ,所以现在我想把开头和结尾拼接在一起,然后检查结果是否是一个有效的文件,采用某种专有格式。 (这都是背景信息,请不要深入了解!)

我有一个 java 类(我无法更改)可以读取并因此验证这些文件。所以我想简单地将我的放在一起的文件提供给这个方法。如果成功,我将继续下一个“开始部分”,否则我会尝试将开始部分与不同的结束部分相匹配。

我想将“拼接在一起的文件”保留在内存中(而不是将其写入临时文件),因为很明显我需要高效率。这是最后的手段;事实上,我们需要将成千上万的开始与成千上万的结局相匹配。但同样,让我们​​继续回答问题 :)

最佳答案

如果您的 Java 类接受 File也就是说,文件系统中的文件路径,那么是的,您必须在文件系统中创建一个文件,然后将文件路径提供给 Java 类。您可以通过在 RAM 驱动器中创建文件来加快速度,但它仍然是一个文件。如果类(class)也接受 InputStream (精心设计的类(class)),那么你可以使用 ByteArrayInputStream .该类接受输入数据的另一个可能接口(interface)是 Java NIO机械 ReadableByteChannel作为抽象 java.io.InputStream

的 NIO 模拟

关于Java - 将字节数组或字符串转换为(虚拟)文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27069377/

相关文章:

java - 需要从 ArrayLists<Double> 的 ArrayList 中删除元素

php - 重命名文件(如果已存在)- php 上传系统

java - 尝试使用 java 8 递归列出系统根目录中的所有文件时出现 "Config.Msi"目录问题

C# 4.0 : Convert pdf to byte[] and vice versa

javascript - 如何从 JPG 的 arrayBuffer 表示创建 Canvas imageData 数组

java - 在 Android EditText 中使用样式(粗体、斜体)编写文本

java - 如何通过采集上一个jsp页面的结果来显示上一个页面的结果?

java - 找不到适合 jdbc :mysql://localhost/的驱动程序

java - 从 mac 发送文件到打印机 - java

c# - 从 C# 中的巨大 MemoryStream 中读取