我沒有 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
添加回答
舉報
0/150
提交
取消