我正在尝试创建一个FileSystem
保存 ext2 文件系统的对象。我的URI
似乎无效,给我一个路径组件应该是“/”运行时错误。
我使用的是 Windows,我的项目位于 Eclipse 中,有一个名为“fs”的子目录,用于保存文件系统映像。
我的代码...
URI uri = URI.create("file:/C:/Users/Rosetta/workspace/filesystemProject/fs/ext2");
/* uri holds the path to the ext2 file system itself */
try {
FileSystem ext2fs = FileSystems.newFileSystem(uri, null);
} catch (IOException ioe) {
/* ... code */
}
我已将文件系统加载为File
对象并使用了getURI
方法来确保我的URI
与实际相同URI
,确实如此。
如何加载文件系统?
EDIT:
下面的堆栈跟踪
Exception in thread "main" java.lang.IllegalArgumentException: Path component should be '/'
at sun.nio.fs.WindowsFileSystemProvider.checkUri(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.newFileSystem(Unknown Source)
at java.nio.file.FileSystems.newFileSystem(Unknown Source)
at java.nio.file.FileSystems.newFileSystem(Unknown Source)
WindowsFileSystemProvider 检查 URI 的路径是否仅为“/”。 uri 作为 URI 完全有效,问题在于文件系统的要求。 crashystar 说得对(我还不能发表评论)并且应该使用 Path 。
如果您阅读 newFileSystem(Path, ClassLoader) 的 JavaDoc,您会发现 ClassLoader 可以保留为 null,因此您只需要做
Path path = Paths.get("C:/Users/Rosetta/workspace/filesystemProject/fs/ext2");
FileSystem ext2fs = FileSystems.newFileSystem(path, null);
通过将其保留为 null,Java 会尝试查找已安装的提供程序(因此您不能期望使用自定义提供程序)。如果它是自定义提供程序,您必须使用可以加载该提供程序的类加载器。如果提供程序位于您的类路径上,那么就足够了
getClass().getClassLoader()
既然您说您只是希望操作系统执行此操作,请将其保留为空。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)