java - 字节数组到文件对象而不保存到磁盘

标签 java file byte

我有一个方法在 .txt 的代码的不同部分接收来自 Files.readAllBytes()byte[] .docx 文件。我想从字节创建一个新的 File 对象,以便稍后从中读取内容,而不将该文件保存到磁盘。这可能吗?或者是否有更好的方法从文件字节中获取内容?

最佳答案

这不是它的工作原理。 java.io.File 对象是一个轻型包装器:查看 source code - 它有一个包含路径的 String 字段,这就是它除了一些簿记内容之外的所有内容。

不可能用 java.io.File 对象表示任意数据j.i.File 对象表示磁盘上的文字文件,不能表示任何其他内容。

Files.readAllBytes 从字节中获取内容,这就是该方法具有该名称的原因。

通常的解决方案是重载某些库中采用文件的方法;还将有一个采用 byte[] 的方法,或者,如果没有,则采用一个采用 InputStream 的方法(您可以从byte[] 很容易:new ByteArrayInputStream(byteArr) 将完成这项工作。

如果您使用的 API 不包含任何此类方法,则它是一个糟糕的 API,您应该找到其他东西,或者咬紧牙关并接受您使用的是一个糟糕的 API,并提供所有解决方法暗示,包括必须将字节保存到磁盘只是以满足 asinine API。

但先看;我打赌有一个 byte[] 和/或 InputStream 变体(或者可能是 URLByteBufferByteStream 或其他一些更奇特的变体)。

关于java - 字节数组到文件对象而不保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66199375/

相关文章:

java - android - Теextview 不会立即改变

C++ - 如何获取特定用户的桌面路径

c# - 如何对两个字节值使用 C# 的三元运算符?

java - 将装箱字节设置为字节文字时出错 - Java

c# - 模仿 Windows 默认文件重命名行为的 .Net 方法

Java Bytebuffer只能顺序读取?

java - 关于从另一个对象访问的 protected 方法访问级别是什么

java - 使用java解析robot.txt并判断一个url是否被允许

java - 如何将此日期格式与正则表达式相匹配?

Java:未使用最新版本的文件(在程序执行期间修改)