I am making an application where the user picks a file from:
FilePicker.PickFile(filename)
where filename is a string.
In the method, it will translate into:
File file = new File(filename);
and nothing is wrong with that. Next, I do,
if(file.exists()){
System.out.println(file.getName());
}
else{
System.out.println("Fail.");
}
and this is where the problem begins. I want to get the name of the file, say “HELLO.txt,” but if filename is “hello.txt,” it still passes the file.exists() check, and file.getName() returns as “hello.txt,” not “HELLO.txt”. Is there a way, to return file.getName() as the case-sensitive version as “HELLO.txt?” Thanks!
An example:
HELLO.txt is the real file
FilePicker.PickFile("hello.txt");
OUTPUT:
hello.txt
When you are using Windows, which is case preserving (FAT32/NTFS/..), you can use
file.getCanonicalFile().getName()to get the canonical name of the selected file.When you are using Linux or Android and you want to select a file based on a file name that does not necessarily match case, iterate through all files in the file’s directory (
file.getParent()), and pick the one that.equalsIgnoreCasethefilename. Or see Case-insensitive File.equals on case-sensitive file system