gpt4 book ai didi

java - 使用 apache VFS 创建虚拟文件系统

转载 作者:行者123 更新时间:2023-12-04 18:04:23 24 4
gpt4 key购买 nike

对于单元测试,我想用 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());
}

我的问题:这是正确的做法吗?关于这个主题的例子很少。

我仍然收到日志消息:
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

然而,看起来不错:文件和目录实际上是在我的硬盘驱动器上的项目文件夹中创建的。我想,这一切的重点是为了避免那个......?是我做错了什么还是我只是不明白......?

最佳答案

您正在使用 Paths.get

Path testDirectoryPath  = Paths.get("test");

Paths.get 总是在默认文件系统上创建路径。你应该使用
Path testDirectoryPath  =  fileSystem.getPath("test");

关于java - 使用 apache VFS 创建虚拟文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29623648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com