如何检测文件系统是否区分大小写?

时间:2009-08-17 13:58:54

标签: java filesystems case-sensitive system-properties

我有一个文件夹List<String>的文件名和String的某个文件名。我想检测文件名是否在列表中,但需要尊重底层文件系统是否区分大小写的属性。

有没有简单的方法可以做到这一点(除了检查System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1的“黑客”)? ; - )

5 个答案:

答案 0 :(得分:11)

不要使用字符串来表示您的文件;使用java.io.File:

http://java.sun.com/javase/6/docs/api/java/io/File.html#equals(java.lang.Object)

答案 1 :(得分:2)

boolean isFileSystemCaseSensitive = !new File( "a" ).equals( new File( "A" ) );

答案 2 :(得分:2)

看起来您可以使用IOCase

答案 3 :(得分:1)

写一个名为“HelloWorld”的文件;尝试读取名为“hELLOwORLD”的文件?

答案 4 :(得分:0)

我认为任何现有示例都无法正确处理此问题,您需要将文件写入磁盘。

    private boolean caseSensitivityCheck() {
    try {
        File currentWorkingDir = new File(System.getProperty("user.dir"));
        File case1 = new File(currentWorkingDir, "case1");
        File case2 = new File(currentWorkingDir, "Case1");
        case1.createNewFile();
        if (case2.createNewFile()) {
            System.out.println("caseSensitivityCheck: FileSystem of working directory is case sensitive");
            case1.delete();
            case2.delete();
            return true;
        } else {
            System.out.println("caseSensitivityCheck: FileSystem of working directory is NOT case sensitive");
            case1.delete();
            return false;
        }
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}