में File
कक्षा दो तार देखते हैं, separator
और pathSeparator
।
क्या फर्क पड़ता है? मुझे कब एक का उपयोग करना चाहिए?
में File
कक्षा दो तार देखते हैं, separator
और pathSeparator
।
क्या फर्क पड़ता है? मुझे कब एक का उपयोग करना चाहिए?
जवाबों:
अगर आपका मतलब File.separator
और है File.pathSeparator
:
File.pathSeparator
फ़ाइल पथों की सूची में अलग-अलग फ़ाइल पथों को अलग करने के लिए उपयोग किया जाता है। खिड़कियों पर, पैठ पर्यावरण चर पर विचार करें। आप एक ;
का उपयोग करने के लिए फ़ाइल पथों को अलग File.pathSeparator
करेंगे ताकि विंडोज हो ;
।
File.separator
/
या तो \
एक विशिष्ट फ़ाइल के लिए पथ को विभाजित करने के लिए उपयोग किया जाता है। उदाहरण के लिए विंडोज पर यह \
या हैC:\Documents\Test
File.separator
है के File.fileSeparator
बारे में होना चाहिएFile.pathSeparator
File
। मुझे लगता है कि फ़ाइल भाग निहित है। लेकिन कौन जानता है कि उन्होंने जावा के साथ बहुत कुछ किया।
जब आप किसी फ़ाइल पथ का निर्माण कर रहे हैं, तो आप विभाजक का उपयोग करें। तो यूनिक्स में विभाजक है /
। इसलिए यदि आप यूनिक्स पथ बनाना चाहते हैं तो आप /var/temp
इसे इस तरह से करेंगे:
String path = File.separator + "var"+ File.separator + "temp"
pathSeparator
जब आप क्लासपाथ में फ़ाइलों की सूची के साथ काम कर रहे होते हैं , तब आप इसका उपयोग करते हैं। उदाहरण के लिए, यदि आपके ऐप ने जार की एक सूची ली है तो तर्क के रूप में उस सूची को प्रारूपित करने का मानक तरीका है:/path/to/jar1.jar:/path/to/jar2.jar:/path/to/jar3.jar
तो दी गई फाइलों की एक सूची है जो आप कुछ इस तरह से करेंगे:
String listOfFiles = ...
String[] filePaths = listOfFiles.split(File.pathSeparator);
/var/temp
तो इसका उपयोग करना बेकार है File.separator
क्योंकि आपके पास पहले से ही प्लेटफ़ॉर्म-निर्भर कोड है। साथ ही मार्ग को हार्डकोड कर सकता है।
java.io.File
वर्ग में चार स्थिर विभाजक होते हैं। बेहतर समझ के लिए, आइए कुछ कोड की मदद से समझते हैं
ध्यान दें कि ये सभी अंतिम चर और प्रणाली पर निर्भर हैं।
यहाँ इन विभाजक चर को मुद्रित करने के लिए जावा प्रोग्राम है। FileSeparator.java
import java.io.File;
public class FileSeparator {
public static void main(String[] args) {
System.out.println("File.separator = "+File.separator);
System.out.println("File.separatorChar = "+File.separatorChar);
System.out.println("File.pathSeparator = "+File.pathSeparator);
System.out.println("File.pathSeparatorChar = "+File.pathSeparatorChar);
}
}
यूनिक्स प्रणाली पर उपरोक्त कार्यक्रम का आउटपुट:
File.separator = /
File.separatorChar = /
File.pathSeparator = :
File.pathSeparatorChar = :
विंडोज सिस्टम पर प्रोग्राम का आउटपुट:
File.separator = \
File.separatorChar = \
File.pathSeparator = ;
File.pathSeparatorChar = ;
हमारे प्रोग्राम प्लेटफ़ॉर्म को स्वतंत्र बनाने के लिए, हमें इन विभाजकों का उपयोग हमेशा फ़ाइल पथ बनाने या किसी सिस्टम चर जैसे PATH, CLASSPATH को पढ़ने के लिए करना चाहिए।
यहां कोड स्निपेट दिखाया गया है कि विभाजकों का सही उपयोग कैसे करें।
//no platform independence, good for Unix systems
File fileUnsafe = new File("tmp/abc.txt");
//platform independent and safe to use across Unix and Windows
File fileSafe = new File("tmp"+File.separator+"abc.txt");
String
और char
उपर्युक्त विधियों द्वारा लौटे ठीक से प्रारूपित बैकस्लैश (यदि Windows पर) वापसी करते।