我正在使用专有的Java API(未公开的源代码),该API具有在其中一个接口中定义的方法:
Foo.bar(String fileName, String formatName);
此方法的问题在于它需要String fileName
。我希望有一种方法可以采用File file
或某种流,但这种方法不存在。反编译.class文件显示API在内部执行new File(fileName)
,但模仿其整个行为太过冒险和风险。
在我的代码中,我创建了一个流,我希望能够先调用bar()
而不先将任何内容写入磁盘(不是物理上的)。
有什么方法可以让我Foo.bar()
接受我的信息流?也许通过在Java中使用一些虚拟文件系统?
我们正在使用Java 1.7。
答案 0 :(得分:1)
这是否满足您的需求?
https://docs.oracle.com/javase/8/docs/technotes/guides/io/fsp/filesystemprovider.html
java.nio.file.spi.FileSystemProvider类允许您开发一个 定制文件系统提供商。自定义文件系统提供程序很有用 在以下情况中:
开发基于内存或基于zip文件的文件系统
扩展班级java.nio.file.spi.FileSystemProvider
并覆盖其方法newInputStream
或newOutputStream
,您应该能够将您的信息流作为文件提供。