表示以 `\` 开头但没有磁盘驱动器的 `Path`,在 Windows 下
Represent a `Path` starting with a `\` but without a disk drive, under Windows
我没有 Windows 副本,但想知道 Java 中的行为和推荐用法,用于表示 Windows 下的 \autoexec.bat
等路径?
从语义上讲,这样的路径将表示任何文件系统根目录中的文件 autoexec.bat
。因此,在表示文件之前,需要根据表示磁盘驱动器的路径(例如 C:\
)对其进行解析。从这个意义上说,它不是 absolute。但是,我想它也没有根组件。
当运行 JVM 在Windows 上时,可以创建这样的路径吗?如果是这样,getRoot()
和 isAbsolute()
return 会是什么?
我使用 Memory File System 尝试了以下代码,但这会抛出 InvalidPathException
:“路径不得以索引 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
或 D:\autoexec.bat
或 …
在Windows中,\
指的是当前驱动器,在我的例子中是C:\
。
不确定 MemoryFileSystemBuilder
是如何工作的,但下面的代码
File file = new File("\test.txt");
final Path truc = file.toPath();
System.out.println("Root: " + truc.getRoot().toString());
System.out.println("Abs: " + truc.isAbsolute());
System.out.println("Abs: " + truc.toAbsolutePath().toString());
给出以下输出
Root: \
Abs: false
Abs: C:\test.txt
我没有 Windows 副本,但想知道 Java 中的行为和推荐用法,用于表示 Windows 下的 \autoexec.bat
等路径?
从语义上讲,这样的路径将表示任何文件系统根目录中的文件 autoexec.bat
。因此,在表示文件之前,需要根据表示磁盘驱动器的路径(例如 C:\
)对其进行解析。从这个意义上说,它不是 absolute。但是,我想它也没有根组件。
当运行 JVM 在Windows 上时,可以创建这样的路径吗?如果是这样,getRoot()
和 isAbsolute()
return 会是什么?
我使用 Memory File System 尝试了以下代码,但这会抛出 InvalidPathException
:“路径不得以索引 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
或 D:\autoexec.bat
或 …
在Windows中,\
指的是当前驱动器,在我的例子中是C:\
。
不确定 MemoryFileSystemBuilder
是如何工作的,但下面的代码
File file = new File("\test.txt");
final Path truc = file.toPath();
System.out.println("Root: " + truc.getRoot().toString());
System.out.println("Abs: " + truc.isAbsolute());
System.out.println("Abs: " + truc.toAbsolutePath().toString());
给出以下输出
Root: \
Abs: false
Abs: C:\test.txt