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

时间:2014-11-21 20:03:39

标签: java file bytearray inputstream

简而言之:我想将字节数组或字符串转换为File对象,以便我可以将此File对象用作其签名方法的参数我无法改变。我希望在没有接触驱动器的情况下实现内存。

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

完整:我正在帮助完成一个非常复杂的数据恢复项目。我们现在有一个超过400GB的磁盘映像,这是一个2MB节的集合。我想要恢复的一些文件从一个开始,到另一个2MB节结束。我们有一个清单,我们已经看到了开始和结束的位置,所以现在我想将起点和结尾拼接在一起,然后检查结果是否是一个有效的文件,采用一些预示格式。 (这是所有背景信息,请不要进入!)

我有一个可以读取并因此验证这些文件的java类(我无法改变)。所以我想简单地将我的put-together-file提供给这个方法。如果它成功了,我继续前进到下一个" begin-part",否则我尝试将begin-part与不同的end-part匹配。

我想保留'拼接文件'在内存中(不是写入临时文件),因为它可能很清楚我需要高效率。这是最后的手段;实际上,我们需要将数千个起点与数千个结尾相匹配。但同样,让我们​​继续问题:)

1 个答案:

答案 0 :(得分:1)

如果您的Java类在文件系统中接受File文件路径,那么是的,您必须在文件系统中创建一个文件,然后向Java类提供文件路径。你可以通过在RAM驱动器中创建文件来加快速度,但它仍然是一个文件。如果课程也接受InputStream(设计良好的课程),那么您可以使用ByteArrayInputStream。接受输入数据的类的另一个可能接口是Java NIO机制,其中ReadableByteChannel是抽象java.io.InputStream

的NIO模拟