【问题标题】:Java - Cast a byte array or String to (virtual) File [duplicate]Java - 将字节数组或字符串转换为(虚拟)文件[重复]
【发布时间】:2015-01-20 01:43:51
【问题描述】:

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

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

完整:我正在帮助一个非常复杂的数据恢复项目。我们现在有一个超过 400GB 的磁盘映像,它是 2MB 部分的集合。我要恢复的一些文件从一个开始,到另一个 2MB 部分结束。我们有一个我们在哪里看到开始和结束的清单,所以现在我想将开始和结束缝合在一起,然后检查结果是否是一个有效的文件,采用某种专有格式。 (这是所有背景信息,我们请不要进入!)

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

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

【问题讨论】:

  • A java.io.File 只代表路径和文件名,并不代表文件本身的实际内容。
  • 如果您的 API 采用 java.io.File,我能想到的唯一简单方法就是使用 RAM 驱动器...
  • 嗯,我想我确实需要一个 RAM 驱动器......听起来如果 File 只能指向“一个实际文件”,就没有其他办法了。谢谢!
  • 这是什么操作系统?
  • 我正在 Windows 7 上编写程序。我无法轻松访问另一个平台来工作......但我看到有许多免费实用程序可以在 Windows 上创建 RAM 驱动器,也是。

标签: java file bytearray inputstream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 2011-08-06
    • 2013-12-19
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多