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

时间:2015-08-03 08:42:38

标签: java file path stream filesystems

我正在使用专有的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。

1 个答案:

答案 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 并覆盖其方法newInputStreamnewOutputStream,您应该能够将您的信息流作为文件提供。