Byte array to File object without saving to disk(字节数组到文件对象,而不保存到磁盘)
问题描述
我有一个方法,它接受来自.txt或.docx文件的不同代码部分中的byte[]
。我想从字节创建一个新的File
对象,以便以后从中读取内容,而不将该文件保存到磁盘。这个是可能的吗?或者是否有更好的方法从文件字节中获取内容?
推荐答案
它不是这样工作的。java.io.File
对象是一个简单的包装:查看source code-它有一个String
字段,其中包含路径,这是它除了一些记账内容之外的所有内容。
无法使用java.io.File对象表示任意数据。j.i.File
对象表示磁盘上的文字文件,不能表示其他任何内容。
Files.readAllBytes
从字节中获取内容,即..该方法为何具有该名称。
通常的解决方案是,某些库中接受文件的方法被重载;也会有一个接受byte[]
的方法,或者,如果不存在,则接受InputStream
的方法(您可以很容易地从byte[]
创建一个is:new ByteArrayInputStream(byteArr)
将完成这项工作)。
如果您使用的API不包含任何此类方法,则它是一个糟糕的API,您应该找到其他方法,或者咬紧牙关接受您正在使用的糟糕的API,以及这意味着的所有解决方法,包括必须将字节保存到磁盘以满足愚蠢的API。
但先看一下;我打赌有一个byte[]
和/或InputStream
变体(或者可能是URL
、ByteBuffer
或ByteStream
或其他几个更奇异的变体)。
这篇关于字节数组到文件对象,而不保存到磁盘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:字节数组到文件对象,而不保存到磁盘
基础教程推荐
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01