Java 通过FileSystemView.getFile(父级,false)获取的文件对于isDirectory()和isFile()都返回true

Java 通过FileSystemView.getFile(父级,false)获取的文件对于isDirectory()和isFile()都返回true,java,windows,file,Java,Windows,File,我正在编写一个java桌面应用程序,它具有类似windows文件浏览器的文件搜索功能。对于这个应用程序,我使用javax.swing.filechooser.*中的类FileSystemView; 在一些测试之后,我注意到一个File对象使用FileSystemView.getFiles(parent,false)方法得到;为类File的isFile()和isDirectory()方法返回true 此文件是指向C下另一个文件夹的windows链接:\ 取而代之的是一个文件(始终是windows链

我正在编写一个java桌面应用程序,它具有类似windows文件浏览器的文件搜索功能。对于这个应用程序,我使用javax.swing.filechooser.*中的类FileSystemView; 在一些测试之后,我注意到一个File对象使用FileSystemView.getFiles(parent,false)方法得到;为类File的isFile()和isDirectory()方法返回true

此文件是指向C下另一个文件夹的windows链接:\

取而代之的是一个文件(始终是windows链接),该文件使用相同的FileSystemView方法获取,但与一个返回正常值的.exe文件相关

我的桌面上有所有这些链接,这里是一个用于测试的示例例程: (只需在桌面上放置指向文件夹和文件的链接)

这是输出:

Root file: Desktop (C:\Documents and Settings\SIC\Desktop)
Scanning Desktop\::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    > isFile: false isDirectory: true
Scanning Desktop\::{208D2C60-3AEA-1069-A2D7-08002B30309D}
    > isFile: false isDirectory: true
Scanning Desktop\Documenti
    > isFile: false isDirectory: true
Scanning Desktop\COLLAUDI.lnk
    > isFile: true  isDirectory: true
Scanning Desktop\GeInt.lnk
    > isFile: true  isDirectory: false

Scanning files properties: 
Scanning C:\Documents and Settings\SIC\Desktop\COLLAUDI.lnk
    > isDirectory:false > isFile:true
Scanning C:\Documents and Settings\SIC\Desktop\GeInt.lnk
    > isDirectory:false > isFile:true

为什么我得到这个值

请参阅。@VGR在windows 7和另一台使用windows xp和Java的pc上运行此任务时,我也遇到同样的问题7@River
C:\\Documents and Settings
表示Windows XP。或者更早的版本。
Root file: Desktop (C:\Documents and Settings\SIC\Desktop)
Scanning Desktop\::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
    > isFile: false isDirectory: true
Scanning Desktop\::{208D2C60-3AEA-1069-A2D7-08002B30309D}
    > isFile: false isDirectory: true
Scanning Desktop\Documenti
    > isFile: false isDirectory: true
Scanning Desktop\COLLAUDI.lnk
    > isFile: true  isDirectory: true
Scanning Desktop\GeInt.lnk
    > isFile: true  isDirectory: false

Scanning files properties: 
Scanning C:\Documents and Settings\SIC\Desktop\COLLAUDI.lnk
    > isDirectory:false > isFile:true
Scanning C:\Documents and Settings\SIC\Desktop\GeInt.lnk
    > isDirectory:false > isFile:true