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



我使用的是专有的Java API(源代码未公开),它在其中一个接口中定义了一个方法:

Foo.bar(String fileName, String formatName);

这个方法的问题是它需要一个String fileName。我希望有一种方法可以采用File file或某种代替,但这样的方法不存在。反编译。class文件显示API在内部做了一个new File(fileName),但是模仿它的整个行为太令人生畏和冒险了。

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

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

满足您的需求了吗?

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

java.nio.file.spi.FileSystemProvider类允许您开发一个自定义文件系统提供程序。自定义文件系统提供程序很有用在以下情况下:

开发基于内存或zip-file的文件系统

通过扩展类java.nio.file.spi.FileSystemProvider并覆盖它的方法newInputStreamnewOutputStream,你应该能够提供你的流作为一个文件。

相关内容

  • 没有找到相关文章

最新更新