2012-03-08 15 views
126

क्या फ़ाइलऑटपुटस्ट्रीम का उपयोग इस तरीके से करने का कोई तरीका है कि यदि कोई फ़ाइल (स्ट्रिंग फ़ाइल नाम) मौजूद नहीं है, तो यह इसे बनाएगा?जावा फ़ाइलऑटपुटस्ट्रीम फ़ाइल मौजूद नहीं है

FileOutputStream oFile = new FileOutputStream("score.txt", false); 

उत्तर

202

यह अगर फ़ाइल मौजूद नहीं है और नहीं बनाया जा सकता (doc) एक FileNotFoundException फेंक होगा, लेकिन यह करता है, तो यह कर सकते हैं बना देगा। यह सुनिश्चित हो कि आप शायद चाहिए पहले टेस्ट कि फ़ाइल मौजूद है इससे पहले कि आप FileOutputStream बनाने (और यदि ऐसा नहीं होता है createNewFile() साथ बनाने):

File yourFile = new File("score.txt"); 
yourFile.createNewFile(); // if file already exists will do nothing 
FileOutputStream oFile = new FileOutputStream(yourFile, false); 
+2

यदि फ़ाइल मौजूद नहीं है, तो मैं एक खाली .txt फ़ाइल कैसे बनाऊंगा? –

+2

@StefanDunn 'createNewFile()' विधि के साथ, जैसा कि मेरे उदाहरण में दिखाया गया है। – talnicolas

+48

स्थिति अनावश्यक है। [जावाडॉक] के अनुसार (http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#createNewFile%28%29), 'createNewFile()' स्वयं परमाणु रूप से जांचता है फ़ाइल का अस्तित्व – aztek

16
File f = new File("Test.txt"); 
if(!f.exists()) 
    f.createNewFile(); 

पास अपने FileOutputStream निर्माता को यह f

+0

इसने फ़ाइल बनाई है अगर यह नहीं मिला, धन्यवाद। –

+0

यहां सबसे अच्छा जवाब। +1। – m4heshd

1

यदि फ़ाइल मौजूद नहीं है तो आप संभावित रूप से FileNotFoundException प्राप्त कर सकते हैं।

जावा प्रलेखन कहते हैं:

होना या न होना एक फ़ाइल उपलब्ध है या बनाया जा सकता है अंतर्निहित प्लेटफ़ॉर्म पर निर्भर करता है http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

आप जावा 7 का उपयोग कर रहे हैं तो आप उपयोग कर सकते हैं java.nio पैकेज:

विकल्प पैरामीटर निर्दिष्ट करता है कि फ़ाइल कैसे बनाई जाती है या खोला जाता है ... यह लिखने के लिए फ़ाइल को खोलता है, फ़ाइल बनाने अगर यह मौजूद नहीं है ...

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

21

यह मौजूद है या नहीं आप एक रिक्त फ़ाइल बना सकते हैं ...

new FileOutputStream("score.txt", false).close(); 

यदि आप यदि वह मौजूद है फ़ाइल छोड़ना चाहते हैं ...

new FileOutputStream("score.txt", true).close(); 

आप केवल अगर आप फाई बनाने की कोशिश एक FileNotFoundException मिल एक निर्देशिका में ले जो मौजूद नहीं है।

+1

यह दोनों मामलों में 'FileNotFoundException' फेंकता है। – mixel

20

फ़ाइल बनाने से पहले, सभी मूल निर्देशिका बनाने की आवश्यकता है।

उपयोग yourFile.getParentFile().mkdirs()

11

FileUtils Apache Commons से एक पंक्ति में इस लक्ष्य को हासिल करने के लिए एक बहुत अच्छा तरीका है।

FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt") 

यह अगर अस्तित्व में नहीं है और न ही मौजूद है, तो फ़ाइल बनाने और उसे एक अपवाद फेंक अगर फाइल वस्तु एक निर्देशिका है या नहीं लिखा जा सकता है पैरेंट फ़ोल्डरों पैदा करेगा। यदि वर्तमान उपयोगकर्ता आपरेशन करने के लिए अनुमति नहीं है

File file = new File("/home/nikhil/somedir/file.txt"); 
file.getParentFile().mkdirs(); // Will create parent directories if not exists 
file.createNewFile(); 
FileOutputStream s = new FileOutputStream(file,false); 

उपरोक्त सभी कार्यों के लिए एक अपवाद फेंक देते हैं: यह बराबर है।

2

मौजूद नहीं होने पर फ़ाइल बनाएं।यदि फ़ाइल बाहर निकलता है, उसकी सामग्री को स्पष्ट:

/** 
* Create file if not exist. 
* 
* @param path For example: "D:\foo.xml" 
*/ 
public static void createFile(String path) { 
    try { 
     File file = new File(path); 
     if (!file.exists()) { 
      file.createNewFile(); 
     } else { 
      FileOutputStream writer = new FileOutputStream(path); 
      writer.write(("").getBytes()); 
      writer.close(); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
0

बस फ़ाइल केवल तभी पथ और फ़ाइलें का उपयोग कर मौजूद नहीं है बनाने के लिए एक वैकल्पिक तरीका देते।

Path path = Paths.get("Some/path/filename.txt"); 
Files.createDirectories(path.getParent()); 
if(!Files.exists(path)) 
    Files.createFile(path); 
Files.write(path, ("").getBytes()); 
संबंधित मुद्दे