/ / वैध स्ट्रिंग इनपुट COULD एक मान्य पथ है - जावा, फ़ाइल

स्ट्रिंग इनपुट मान्य करें एक वैध पथ हो - जावा, फ़ाइल

मैं एक स्ट्रिंग पथ को मान्य करना चाहता हूं। मैं यह जाँच नहीं करना चाहता कि पथ मौजूद है या पथ बनाएँ (जिसमें बनाना + फिर हटाना शामिल है), मैं बस यह जांचना चाहता हूं कि इनपुट स्ट्रिंग COULD निष्पादन प्रणाली पर एक मान्य पथ हो।

अब तक मैं के साथ खिलवाड़ किया गया है File कोई भाग्य नहीं। मैं अपने OSX मशीन पर विफल होने की उम्मीद करूंगा, लेकिन यह नहीं है

File f = new File("!@£$%^&*()±§-_=+[{}]:;""|>.?/<,~`±");
System.out.println(f.getCanonicalPath());

क्या ऐसा कुछ है जो मेरे लिए ऐसा करेगा?

उत्तर:

जवाब के लिए 0 № 1

आप इसे regex के माध्यम से कर सकते हैं: जावास्क्रिप्ट में फ़ाइल पथ सत्यापन

या जाँच करके यदि पथ के जनक मौजूद हैं: क्या जावा में यह निर्धारित करने का कोई तरीका है कि क्या फ़ाइल बनाने का प्रयास किए बिना कोई पथ वैध है?

बस ध्यान दें कि पथ OS पर निर्भर करता है: https://serverfault.com/questions/150740/linux-windows-unix-file-names-which-characters-are-allowed-which-are-unesc

इसके अलावा, सिर्फ इसलिए कि यह मार्ग वैध है, इसका मतलब यह नहीं है कि फ़ाइल वहां लिखी जा सकती है। उदाहरण के लिए, लिनक्स में, आपको लिखने के लिए एक सुपर उपयोगकर्ता होना चाहिए / usr /


जवाब के लिए 0 № 2

आप मार्ग की जांच करने के लिए रेगेक्स का उपयोग करना चुन सकते हैं। रेगेक्स ऐसा लगेगा:

^(?:[a-zA-Z]:|\\[w.]+\[w.$]+)\(?:[w]+\)*w([w.])+$

और एक उदाहरण देखा जा सकता है यहाँ Rexxr पर। आप इसमें चेक कर सकते हैं Java का उपयोग करते हुए String.matches(regex) समारोह। नीचे एक उदाहरण:

public static void main(String[] args) throws Exception {

String regex = "^(?:[a-zA-Z]\:|\\\\[\w\.]+\\[\w.$]+)\\(?:[\w]+\\)*\w([\w.])+$";
String path = "c:\folder\myfile.txt";

System.out.println(path.matches(regex));

}

(ध्यान दें कि रेग्क्स भागने से बचने के कारण काफी लंबा दिखता है वर्ण)। बस कॉल करना yourPathString.matches(regex), और यह सही है अगर यह एक वैध रास्ता है।


जवाब के लिए 0 № 3

यदि पथ मान्य है, तो कम से कम पैरेंट फ़ाइलों की एक श्रृंखला मौजूद होनी चाहिए। यदि कोई माता-पिता मौजूद नहीं है, तो यह अमान्य होना चाहिए।

public static boolean isValidPath(File file) throws IOException {
file = file.getCanonicalFile();

while (file != null) {
if (file.exists()) {
return true;
}

file = file.getParentFile();
}

return false;
}

System.out.println(isValidPath(new File("/Users/something")));  // true (OS X)
System.out.println(isValidPath(new File("asfq34fawrf")));  // false