2009-08-17 16 views
12

Bir klasörden ve bir dosya adından String olarak List<String> dosya adlarına sahibim. Dosya adının listede olup olmadığını, ancak temel dosya sisteminin büyük/küçük harfe duyarlı olup olmadığına saygı gösterip göstermediğini anlamak istiyorum.Dosya sisteminin büyük/küçük harfe duyarlı olup olmadığını nasıl anlarım?

Bunu yapmanın kolay bir yolu var mı (System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1'u kontrol etmenin "kesmek" dışında)? ;-)

+0

"Büyük harf duyarlı dosya sistemi" nin "OS Windows" ile eşdeğer olmadığını unutmayın. Tüm Windows, Linux ve Mac OS, büyük/küçük harfe duyarlı veya büyük harf duyarlı dosya sistemlerini kullanabilir; kavramları karıştırmayın. "Kesmek", küçük harfli bir dosya adı bulunmadığını iddia etmek olurdu; Büyük harflerle bu ada sahip bir (geçici) dosya oluşturun, ardından küçük harfli dosyanın bulunup bulunmadığını kontrol edin. –

cevap

11

Dosyalarınızı göstermek için Dizeleri kullanmayın; java.io.File kullanın: Eğer IOCase kullanabilirsiniz gibi

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

+0

evet bu en zarif ve kararlı çözüm olduğunu düşünüyorum ... – Epaga

+1

Ek bir not olarak, bir dizinden File dizinindeki File nesnesinin listFiles() yöntemini kullanarak bir dizi dosya alabilirsiniz. Bu daha sonra bir dizi olarak manipüle veya Arrays.asList – Powerlord

+0

yup kullanarak bir listeye dönüştürülebilir temelde ne yaptım ben bir listFiles yöntemi için list() yöntemini değiştirmek oldu ... – Epaga

1

"HelloWorld" adlı bir dosya yazın; "hELLOwORLD" isimli bir dosyayı okumaya mı çalıştınız?

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

Bunu sadece Mac OSX'te, varsayılan büyük/küçük harfe duyarlı dosya sisteminde denediniz ve beklenen sonucu geri getirmiyor. – SaM

+0

Dosya sistemi hesaba katılmadığı notuyla, sadece işletim sistemi - bu cevap kabul edilenden daha kötü değil. Farkında olduğun sürece sorun yok. FS'yi hesaba katan daha iyi bir çözüm bulamadığım için alacağım. +1 – NickSoft

2

görünüyor.

+2

Yine - OS X için çok iyi çalışmıyor. Sadece büyük/küçük harfe duyarlıdır, çünkü dosya ayırıcıları eğik çizgilerdir! Daha fazlası için devreler arasındaki bu tartışmaya bakın: https://issues.apache.org/jira/browse/IO-171 –