对于单元测试,我想创建一个带VFS的内存文件系统。
我目前的代码:
final String ROOTPATH = "ram://virtual";
FileSystemManager fsManager = VFS.getManager();
fsManager.createVirtualFileSystem(ROOTPATH);
FileObject testFile = fsManager.resolveFile(ROOTPATH + "/test.txt");
testFile.createFile();
FileObject testFile2 = fsManager.resolveFile(ROOTPATH + "/test2.txt");
testFile2.createFile();
FileObject testFile3 = fsManager.resolveFile(ROOTPATH + "/test3.txt");
testFile3.createFile();
FileObject testFile4 = fsManager.resolveFile(ROOTPATH + "/test4.txt");
testFile4.createFile();
FileObject folder = fsManager.resolveFile(ROOTPATH);
FileObject[] files = folder.getChildren();
for (FileObject file : files) {
System.out.println(file.getName());
}
我的问题:这是正确的方法吗?这个topica上的例子很稀疏。
我仍然收到日志消息:
Apr 14, 2015 11:08:17 AM org.apache.commons.vfs2.VfsLog info
INFORMATION: Using "/tmp/vfs_cache" as temporary files store.
我可以忽略这个,因为我使用的是ram URI方案吗?我想这是因为我没有配置DefaultFileSystemManager。
感谢您的帮助和提示!
编辑:
现在使用marschall memoryFileSystem:
我从他们的网站复制了示例代码。
这是我的@ Test-Method:
FileSystem fileSystem = this.rule.getFileSystem();
Path testDirectoryPath = Paths.get("test");
Files.createDirectories(testDirectoryPath);
Path p = fileSystem.getPath("test");
System.out.println(p.getFileName());
System.out.println(p.getFileSystem());
Path testfile = Paths.get("test/text2.txt");
Path test = Files.createFile(testfile);
Path f = fileSystem.getPath("test/text2.txt");
System.out.println(f.getFileName());
System.out.println(f.getFileSystem());
System.out.println(f.toAbsolutePath());
这是控制台输出:
test
MemoryFileSystem[VirtualTestFileSystem]
text2.txt
MemoryFileSystem[VirtualTestFileSystem]
/test/text2.txt
看起来没问题:文件和目录实际上是在我的硬盘驱动器上,在项目文件夹中创建的。我想,这一点的全部意义是要避免那个......?我做错了什么,或者我没有得到它......?
答案 0 :(得分:0)
您正在使用Paths.get
Path testDirectoryPath = Paths.get("test");
Paths.get始终在默认文件系统上创建路径。你应该使用
Path testDirectoryPath = fileSystem.getPath("test");