获取文件区分大小写的名称,不区分大小写拼写

4 java string io file

我正在创建一个用户从中选择文件的应用程序:

FilePicker.PickFile(filename)

哪里filename是一个字符串.

在该方法中,它将转换为:

File file = new File(filename);

这并没有错.接下来,我做,

if(file.exists()){
    System.out.println(file.getName());
}
else{
    System.out.println("Fail.");
}
Run Code Online (Sandbox Code Playgroud)

这就是问题的开始.我想得到文件的名称,比如"HELLO.txt",但如果filename是"hello.txt",它仍然通过file.exists()检查,并file.getName()返回"hello.txt",而不是"HELLO.txt".有没有办法,file.getName()作为区分大小写的版本返回"HELLO.txt?" 谢谢!

一个例子:

HELLO.txt is the real file

FilePicker.PickFile("hello.txt");

OUTPUT:

hello.txt

The*_*ail 7

当您使用Windows(保留大小写(FAT32/NTFS/..))时,您可以使用获取所选文件的规范名称.file.getCanonicalFile().getName()

当你使用Linux或Android,并要选择基于这并不一定匹配情况下,文件名的文件,所有文件遍历该文件的目录(file.getParent()),并挑选一个.equalsIgnoreCasefilename.或者在区分大小写的文件系统上查看不区分大小写的File.equals