从FileChooser Java读取时如何获取快捷方式文件即lnk文件的路径

问题描述

当我们从FileChooser java中读取时如何获取快捷方式(即lnk文件)的路径

我们有一个环境,将实际文件存储在服务器中,并将快捷方式文件提供给用户用户从应用程序中选择快捷方式文件,但是当我们选择快捷方式文件时,它将读取目标文件。 现在,如何获取快捷方式文件路径 FileChooser 始终获取目标文件路径 并且还想知道如何识别该文件是快捷文件还是常规文件?因为 FileChooser 始终指向目标文件

这是使用的文件选择器

FileChooser fileChooser = new FileChooser();

File file = fileChooser.showOpenDialog(argument);

此处文件始终指向目标文件

解决方法

假设您使用的是JavaFx FileChooser:如果将.lnk添加到文件扩展名列表,FileChooser将返回原始的.lnk文件路径,否则似乎将路径名解析为链接目标。

尝试使用此代码段启动FileChooser。选择一个LNK文件。即使链接是JPG文件,它也会打印原始LNK文件路径:

FileChooser fc = new FileChooser();
fc.setTitle("Select a lnk");
fc.setInitialDirectory(dir.toFile());
ObservableList<ExtensionFilter> extensionFilters = fc.getExtensionFilters();
extensionFilters.addAll(new ExtensionFilter("Shortcuts","*.lnk"),new ExtensionFilter("Images","*.jpg"));
File f = fc.showOpenDialog(primaryStage);
System.out.println("f="+f);