java - 拥有仅使用 Java 内存的自定义文件实现的最简单方法是什么

标签 java file memory

我有一个代码库,它广泛使用文件来表示单个数据对象。我重构了代码,使数据对象现在是一个显式 java 对象,主要隐藏了与底层文件系统的交互。但是,我们使用一些外部工具(如 Weka)来读写文件。

理想情况下,我希望有一个 File 的子类,我可以将其传递给由内存中的字节数组支持的这些其他库——用于读取或写入。

我的谷歌搜索找到了内存映射文件,但这不是我遇到的问题,因为我不希望文件系统上有任何实际文件。是否已经有任何解决方案,或者我应该自己将 File 子类化并覆盖所有引用真实文件系统的方法?

最佳答案

这通常就是为什么除非确实有必要,否则永远不要编写获取文件的方法。您的库不提供采用任意 InputStream 的方法吗?在这种情况下,传递 ByteArrayInputStream 或任何从内存读取的输入流是微不足道的。

覆盖 File 的问题在于您不太可能以对您有帮助的方式覆盖它。例如,如果库使用 FileInputStream 打开它,那么此时字节的来源实际上是由 FileInputStream 实现控制的,而不是由您的文件控制的。

关于java - 拥有仅使用 Java 内存的自定义文件实现的最简单方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804814/

相关文章:

java - 为什么我不断收到 "Not a JSON Array"?

java客户端服务器端socket编程实现问题

c - C 中的 fwrite() 函数未写出预期答案

linux - 根据另一个文件中的字符串拆分一个文件

java - 为什么强制垃圾收集会增加分配给 java 进程的内存?

java - 识别父数据框中不存在于java子集数据框中的记录

java - 自定义 MBean HTML 页面

java - 如何找出哪个对象在 Java 中打开了文件?

C++ 新建/删除 : deconstruct object from pointer array might not release memory?

memory - Clojure 惯用的内存高效循环