为了账号安全,请及时绑定邮箱和手机立即绑定

在 Windows 下表示以 `\` 开头但没有磁盘驱动器的 `Path`

在 Windows 下表示以 `\` 开头但没有磁盘驱动器的 `Path`

收到一只叮咚 2023-05-17 15:47:02
我没有 Windows 副本,但想知道在 Java 中表示路径(例如\autoexec.bat在 Windows 下)的行为和推荐用法?autoexec.bat从语义上讲,这样的路径将代表任何文件系统根上的文件。C:\因此,在表示文件之前,需要根据表示磁盘驱动器(例如 )的路径对其进行解析。从这个意义上说,它不是绝对的。但是,我想它也没有根组件。在Windows 上运行JVM 时可以创建这样的路径吗?如果是这样,将getRoot()返回什么isAbsolute()?我使用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或......
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

在 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


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信