我没有 Windows 副本,但想知道在 Java 中表示路径的行为和推荐用法,例如\autoexec.bat
在 Windows 下?
从语义上讲,这样的路径将代表autoexec.bat
任何文件系统根目录上的文件。C:\
因此,在表示文件之前,需要根据表示磁盘驱动器的路径(例如 )来解析它。从这个意义上说,它不是绝对的。但是,我想它也没有根组件。
在 Windows 上运行 JVM 时可以创建这样的路径吗?如果是这样,会getRoot()
返回isAbsolute()
什么?
我使用Memory File System尝试了以下代码,但这会抛出InvalidPathException
:“path must not start with separator at index 1: \truc”。这是否忠实地反映了 Windows 下的行为,还是这个特定库的怪癖?
try (FileSystem fs = MemoryFileSystemBuilder.newWindows().build()) {
final Path truc = fs.getPath("\\truc");
LOGGER.info("Root: {}.", truc.getRoot());
LOGGER.info("Abs: {}.", truc.isAbsolute());
LOGGER.info("Abs: {}.", truc.toAbsolutePath());
}
这样的路径在 Windows 终端中是有效的,或者至少是我上次使用 Windows 时(很久以前)。创建这样的路径以标记路径是“绝对的”会很方便(从反斜杠开始的意义上说,因此与文件夹无关),但仍然保留没有指定驱动程序字母的路径。然后可以(稍后)将这样的路径解析为C:\autoexec.bat
or D:\autoexec.bat
or ...</p>