我有一个List<String>
文件夹中的文件名和某个文件名作为String
. 我想检测文件名是否在列表中,但需要尊重底层文件系统是否区分大小写的属性。
有什么简单的方法可以做到这一点(除了检查的“黑客” System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1
)?;-)
我有一个List<String>
文件夹中的文件名和某个文件名作为String
. 我想检测文件名是否在列表中,但需要尊重底层文件系统是否区分大小写的属性。
有什么简单的方法可以做到这一点(除了检查的“黑客” System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1
)?;-)
不要使用字符串来表示您的文件;使用 java.io. 文件:
http://java.sun.com/javase/6/docs/api/java/io/File.html#equals(java.lang.Object)
boolean isFileSystemCaseSensitive = !new File( "a" ).equals( new File( "A" ) );
看起来你可以使用IOCase
.
编写一个名为“HelloWorld”的文件;尝试读取名为“hELLOwORLD”的文件?
我认为现有的任何示例都不能正确处理这个问题,您需要将文件写入磁盘。
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);
}
}