对此帖子有很高的评价:
how to create new java.io.File in memory?
Sorin Postelnicu在其中提到使用Apache Commons VFS RAM文件作为将内存文件传递给需要java.io.File的API的一种方式(我在解释……我希望我不会错过重点)。
根据阅读相关文章,我得出了以下示例代码:
@Test
public void working () throws IOException {
DefaultFileSystemManager manager = new DefaultFileSystemManager();
manager.addProvider("ram", new RamFileProvider());
manager.init();
final String rootPath = "ram://virtual";
manager.createVirtualFileSystem(rootPath);
String hello = "Hello, World!";
FileObject testFile = manager.resolveFile(rootPath + "/test.txt");
testFile.createFile();
OutputStream os = testFile.getContent().getOutputStream();
os.write(hello.getBytes());
//FileContent test = testFile.getContent();
testFile.close();
manager.close();
}
所以,我认为我有一个内存文件ram://virtual/test.txt,内容为“ Hello,World!”
我的问题是:如何将这个文件与需要java.io.File的API一起使用?
答案 0 :(得分:1)
Java的File API始终与本机文件系统一起使用。因此,如果没有文件存在于本机文件系统上,就无法将VFS的FileObject转换为File。
但是有一种方法可以让您的API也可以与InputStream一起使用。大多数库通常都有接受InputStreams的重载方法。在这种情况下,应该可以进行以下操作:
InputStream is = testFile.getContent().getInputStream();
SampleAPI api = new SampleApi(is);