来自Hell(旧Vista安装)的幻影文件夹导致Java String.equals()问题

来自Hell(旧Vista安装)的幻影文件夹导致Java String.equals()问题,java,windows,string,directory,Java,Windows,String,Directory,我正在写一个程序,搜索计算机的目录。在我自己的电脑上,我安装了一个以前启动Windows Vista的驱动器 (但是,有些驱动器即使在“显示隐藏文件夹”时也不会显示。)。 我可以看到文件夹运行cmd,但这并不能解决我的问题。) 我不太关心文件夹,但我关心的是与它们的名称进行字符串比较。但是,当我使用File directory.getName()获取这些幻影文件夹的名称时,string.equals()和string.compareTo()不适用于这些幻影文件夹 我已经打印出了名称,检查了空格,

我正在写一个程序,搜索计算机的目录。在我自己的电脑上,我安装了一个以前启动Windows Vista的驱动器

(但是,有些驱动器即使在“显示隐藏文件夹”时也不会显示。)。 我可以看到文件夹运行cmd,但这并不能解决我的问题。)

我不太关心文件夹,但我关心的是与它们的名称进行字符串比较。但是,当我使用File directory.getName()获取这些幻影文件夹的名称时,string.equals()和string.compareTo()不适用于这些幻影文件夹

我已经打印出了名称,检查了空格,使用了trim等等。但是一个名为“Boot”的隐藏文件夹仍然不会与具有相同值的字符串匹配

TLDR:幻影目录返回与文件目录.getName()不匹配/可比较的字符串


除了解决这个问题,我只是想知道发生了什么。

你可能会在名字中找到隐藏的字符。检查引导文件夹的字符串长度是否为4。将字符串转换为字符数组,并在调试器中检查每个单元格。

在比较文件名时使用不变比较。

嗯。。。你是说C#“StringComparer.InvariantCulture”?如果是这样,这个概念与Java中的“String.equals()”无关。如果他说的是compareTo,那么这个概念与编程语言无关