2009-08-17 15 views
12

मेरे पास एक फ़ोल्डर से फ़ाइल नामों का List<String> है और एक निश्चित फ़ाइल नाम String है। मैं यह जानना चाहता हूं कि फ़ाइल का नाम सूची में है या नहीं, लेकिन अंतर्निहित फाइल सिस्टम की संपत्ति का सम्मान करने की आवश्यकता है चाहे वह केस-संवेदी हो।मैं कैसे पता लगा सकता हूं कि फ़ाइल सिस्टम केस-संवेदी है या नहीं?

क्या ऐसा करने का कोई आसान तरीका है (System.getProperty("os.name", "").toLowerCase().indexOf("windows")!=-1 की जांच के "हैक" के अलावा)? ;-)

+0

ध्यान दें कि "केस असंवेदनशील फाइल सिस्टम" "ओएस विंडोज़" के बराबर नहीं है, वैसे भी। विंडोज़, लिनक्स और मैक ओएस सभी केस-सेंसिटिव या केस-असंवेदनशील फाइल सिस्टम का उपयोग कर सकते हैं; अवधारणाओं को भ्रमित मत करो। "हैक" यह ज़ोर देना होगा कि लोअरकेस फ़ाइल नाम मौजूद नहीं है; उस नाम के साथ अपरकेस में एक (अस्थायी) फ़ाइल बनाएं, फिर जांचें कि लोअरकेस-नामित फ़ाइल मौजूद है या नहीं। –

उत्तर

11

अपनी फ़ाइलों का प्रतिनिधित्व करने के लिए स्ट्रिंग्स का उपयोग न करें; java.io.File का उपयोग करें:

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

+0

हाँ यह सबसे सुरुचिपूर्ण और स्थिर समाधान है जो मुझे लगता है ... – Epaga

+1

एक अतिरिक्त नोट के रूप में, आप फ़ाइल की सूचीफाइल() विधि का उपयोग कर निर्देशिका से फाइलों की एक सरणी प्राप्त कर सकते हैं। इसके बाद इसे सरणी के रूप में छेड़छाड़ की जा सकती है या Arrays.asList – Powerlord

+0

yup का उपयोग करके सूची में परिवर्तित किया जा सकता है मूल रूप से मैंने जो किया था सूची() विधि को सूची में बदल दिया गया था फ़ाइल विधि ... – Epaga

1

"हैलोवर्ल्ड" नाम की एक फ़ाइल लिखें; "HELLOWORLD" नाम की एक फ़ाइल को पढ़ने का प्रयास करें?

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

मैक ओएसएक्स, डिफ़ॉल्ट केस असंवेदनशील फ़ाइल सिस्टम पर अभी इसका परीक्षण किया है और यह अपेक्षित परिणाम वापस नहीं करता है। – SaM

+0

ध्यान दें कि यह फ़ाइल सिस्टम को खाते में नहीं लेता है, केवल ओएस - यह उत्तर स्वीकार्य से भी बदतर नहीं है। जब तक आप इसके बारे में जानते हों तो ठीक है। मैं इसे ले जाऊंगा क्योंकि मुझे बेहतर समाधान नहीं मिला जो खाते में एफएस लेता है। +1 – NickSoft

2

ऐसा लगता है कि आप IOCase उपयोग कर सकते हैं।

+2

फिर से - ओएस एक्स के लिए बहुत अच्छी तरह से काम नहीं करता है। बस केस संवेदनशील मानता है, क्योंकि फ़ाइल विभाजक आगे slashes हैं! देवताओं के बीच अधिक चर्चा के लिए यह चर्चा देखें: https://issues.apache.org/jira/browse/IO-171 –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^