我有一个方法,byte[]它接受来自.txt或.docxFiles.readAllBytes()文件代码的不同部分的a 。我想从字节创建一个新对象以便稍后从中读取内容,而不将该文件保存到磁盘。这可能吗?或者有更好的方法从文件字节中获取内容吗?File
事情不是这样的。对象java.io.File是一个轻型包装器:查看源代码- 它有一个String包含路径的字段,这就是除了一些簿记内容之外的所有内容。
不可能用 java.io.File 对象表示任意数据。j.i.File对象代表磁盘上的文字文件,不能代表任何其他内容。
Files.readAllBytes从字节中获取内容,这就是..该方法具有该名称的原因。
通常的解决方案是重载某个库中接受 File 的方法;还会有一个采用 a 的方法byte[],或者,如果没有,则有一个采用 a 的方法InputStream(您可以轻松地从 a 制作一个 IS byte[]:new ByteArrayInputStream(byteArr)将完成这项工作)。
如果您使用的 API 不包含任何此类方法,那么它就是一个糟糕的 API,您应该寻找其他东西,或者咬紧牙关并接受您正在使用一个糟糕的 API,以及这意味着的所有解决方法,包括必须将字节保存到磁盘才能满足愚蠢的 API。
但先看一下;我打赌有一个byte[]和/或InputStream变体(或者可能URL或ByteBuffer或ByteStream或其他一些更奇特的变体)。