2015-01-02 10 views
9

फ़ाइल में स्थैतिक स्ट्रिंग्स separator और pathSeparator हैं। विभाजक एक "डिफ़ॉल्ट नाम-विभाजक चरित्र" है और पथसेपरेटर एक "पथ-विभाजक चरित्र" है।फ़ाइल। सेपरेटर बनाम फ़ाइल.pathSeparator

क्या अंतर है? क्या कोई समय है जब कोई दूसरे के लिए बेहतर है?

उत्तर

22

java.io.File कक्षा में चार स्थैतिक विभाजक चर शामिल हैं। बेहतर समझने के लिए, आइए कुछ कोड

  1. विभाजक की सहायता से समझें: प्लेटफ़ॉर्म निर्भर डिफ़ॉल्ट नाम-विभाजक चरित्र स्ट्रिंग के रूप में। विंडोज़ के लिए, यह '\' है और यूनिक्स के लिए यह '/'
  2. विभाजक कैरर: विभाजक के समान है लेकिन यह चार
  3. पथसेपरेटर: पथ-विभाजक के लिए प्लेटफ़ॉर्म निर्भर चर। ':' उदाहरण पथ या द्वारा अलग रास्तों में से CLASSPATH चर सूची के लिए ';' यूनिक्स प्रणालियों में और Windows प्रणाली में
  4. pathSeparatorChar: वही pathSeparator के रूप में, लेकिन यह चार है

ध्यान दें कि इन सभी का अंतिम कर रहे हैं चर और सिस्टम निर्भर।

इन विभाजक चर को मुद्रित करने के लिए जावा प्रोग्राम यहां दिया गया है। 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 = ; 

हमारे कार्यक्रम मंच स्वतंत्र बनाने के लिए हम चाहिए फ़ाइल पथ बनाने के लिए हमेशा इन विभाजकों का उपयोग करें या पाथ, क्लास्स्पैट जैसे किसी भी सिस्टम वैरिएबल को पढ़ें।

यहां कोड स्निपेट दिखा रहा है कि विभाजकों का सही तरीके से उपयोग कैसे करें।

//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"); 
+1

pathSeparator अतः missleading है ... ऐसा क्यों है pathVariableSeparator या classpathSeparator नहीं? –

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