2008-09-15 19 views
5

क्या जावा अपने आप के अतिरिक्त प्रतिबंध लगाता है। विंडोज़ (Vista तक) नामों कोक्या जावा अंतर्निहित ऑपरेटिंग सिस्टम के अलावा फ़ाइल नामों पर कोई और प्रतिबंध लगाता है?

\/< > ? * : 

मुझे पता है कि नामों को कैसे सत्यापित करें (नियमित अभिव्यक्ति)।

मुझे उपयोगकर्ताओं द्वारा दर्ज किए गए फ़ाइल नामों को सत्यापित करने की आवश्यकता है।

मेरे आवेदन को किसी भी अन्य प्लेटफ़ॉर्म पर चलाने की आवश्यकता नहीं है, बेशक, मैं प्लेटफ़ॉर्म स्वतंत्र होना पसंद करूंगा!

उत्तर

2

नहीं, आप किसी भी चरित्र से बच सकते हैं जिसे जावा स्ट्रिंग अक्षर में अनुमति नहीं देता है लेकिन फाइल सिस्टम अनुमति देता है।

File.separator 

सही फ़ाइल विभाजक निर्धारित करने के लिए एक मंच पर उपयोग करने के लिए:

इसके अलावा, अगर बंदरगाह के लिए मैक या यूनिक्स के लिए एक Windows ऐप कोशिश कर इसका इस्तेमाल करने के लिए सबसे अच्छा है।

0

जब आप कोई नई फ़ाइल बनाते हैं तो इनपुट किए गए तर्कों को java.io.FileSystem क्लास के प्लेटफॉर्म विशिष्ट कार्यान्वयन द्वारा सामान्यीकृत किया जाएगा। कोई जावा विशिष्ट प्रतिबंध नहीं है जो मुझे पता है।

और हाँ, हमेशा फ़ाइल.सेपरेटर का उपयोग करें।

0

जावा किसी भी स्ट्रिंग का समर्थन करता है जिसे यूनिकोड में व्यक्त किया जा सकता है (कुछ हास्यास्पद रूप से लंबी अधिकतम लंबाई, Integer.MAX_VALUE के अधीन), और फ़ाइल नाम केवल एक और प्रकार की स्ट्रिंग हैं।

बेशक, इसका मतलब है कि आप उस नाम का उपयोग करके फ़ाइल को आजमा सकते हैं और संदर्भित कर सकते हैं जो अंतर्निहित ऑपरेटिंग सिस्टम द्वारा समर्थित नहीं है। यदि आप ऐसा करते हैं, तो आप फ़ाइल संदर्भ का प्रयास करने और उपयोग करने पर किसी प्रकार का IOException प्राप्त करेंगे ...

+0

स्ट्रिंग लम्बाई अधिकतम Integer.MAX_VALUE की है क्योंकि पैर एक int में संग्रहीत है। – jjnguy