java - 将流转换为路径/文件名而不写入物理磁盘

标签 java file path stream filesystems

我正在使用专有的 Java API(未公开源代码),该 API 在其接口(interface)之一中定义了一种方法:

Foo.bar(String fileName, String formatName);

此方法的问题在于它需要一个String fileName。我希望有一种方法可以使用 File file 或某种stream 来代替,但这样的方法不存在。反编译 .class 文件显示 API 在内部执行了一个 new File(fileName),但模仿其整个行为过于令人畏惧和危险。

在我的代码中,我创建了一个流,并且我希望能够调用 bar() 而无需先向磁盘写入任何内容(至少不是物理写入)。

有什么方法可以欺骗 Foo.bar() 接受我的流吗?也许通过利用 Java 中的一些虚拟文件系统?

我们在此使用 Java 1.7。

最佳答案

这能满足您的需求吗?

https://docs.oracle.com/javase/8/docs/technotes/guides/io/fsp/filesystemprovider.html

The java.nio.file.spi.FileSystemProvider class allows you to develop a custom file system provider. A custom file system provider is useful in the following situations:

Developing a memory-based or zip-file-based file system

通过扩展类 java.nio.file.spi.FileSystemProvider 并重写其方法 newInputStreamnewOutputStream 您应该能够将流作为文件提供。

关于java - 将流转换为路径/文件名而不写入物理磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31782957/

相关文章:

java - 使用 JodaTime 获取 Spring /夏季的 CST 时间

java - 将 JPanel 上绘制的图片保存在文件中 [java]

java - Couchbase 查询看不到最近添加的文档

path - 让 NCRUNCH 遵守项目设置中的输出路径?

c++ - Ubuntu 上的 boost::filesystem3::path::parent_path()

java - 斯坦福 NLP 服务器 "Could not handle incoming annotation"(德语)

java - 我们如何知道一条记录是否已被读取?我们如何跟踪记录指针?

file - dart 中的 lib/src 和/bin 有什么区别?

php - move_uploaded_file() 无法将文件从 tmp 移动到 dir

java - 从 Path 中捕获元素