जवाबों:
FileNotFoundException
यदि फ़ाइल मौजूद नहीं है और इसे बनाया नहीं जा सकता है ( doc ), तो यह फेंक देगा , लेकिन यदि यह हो सकता है तो इसे बनाएगा। यह सुनिश्चित करने के लिए कि आपको संभवतः पहले परीक्षण करना चाहिए कि फ़ाइल बनाने से पहले मौजूद है FileOutputStream
(और createNewFile()
यदि ऐसा नहीं है तो बनाएं ):
File yourFile = new File("score.txt");
yourFile.createNewFile(); // if file already exists will do nothing
FileOutputStream oFile = new FileOutputStream(yourFile, false);
createNewFile()
विधि के साथ @StefanDunn , जैसा कि मेरे उदाहरण में दिखाया गया है।
createNewFile()
स्वयं ही फ़ाइल के अस्तित्व की परमाणु जाँच करता है।
createNewFile()
यहाँ समय की कुल बर्बादी है। सिस्टम पहले से ही ऐसा करेगा। आप इसे केवल दो बार देखने के लिए मजबूर कर रहे हैं।
एक फ़ाइल बनाने से पहले, यह सभी माता-पिता की निर्देशिका बनाने के लिए आवश्यक है।
उपयोग yourFile.getParentFile().mkdirs()
आप एक खाली फ़ाइल बना सकते हैं चाहे वह मौजूद हो या नहीं ...
new FileOutputStream("score.txt", false).close();
यदि आप फ़ाइल को छोड़ना चाहते हैं यदि वह मौजूद है ...
new FileOutputStream("score.txt", true).close();
यदि आप किसी निर्देशिका में फ़ाइल बनाने का प्रयास करते हैं तो आपको केवल एक FileNotFoundException मिलेगी, जो मौजूद नहीं है।
FileNotFoundException
दोनों मामलों में फेंकता है।
File f = new File("Test.txt");
if(!f.exists()){
f.createNewFile();
}else{
System.out.println("File already exists");
}
इसे f
अपने FileOutputStream
कंस्ट्रक्टर को पास करें ।
Apache कॉमन्स से FileUtils एक सिंगल लाइन में इसे प्राप्त करने का एक बहुत अच्छा तरीका है।
FileOutputStream s = FileUtils.openOutputStream(new File("/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);
यदि वर्तमान उपयोगकर्ता को ऑपरेशन करने की अनुमति नहीं है, तो उपरोक्त सभी ऑपरेशन एक अपवाद फेंक देंगे।
मौजूद नहीं है तो फ़ाइल बनाएँ। यदि फ़ाइल बाहर निकलती है, तो उसकी सामग्री को साफ़ करें:
/**
* 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();
}
}
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
new FileOutputStream(f)
ज्यादातर मामलों में एक फ़ाइल बनाएगा, लेकिन दुर्भाग्य से आपको FileNotFoundException मिल जाएगी
यदि फ़ाइल मौजूद है, लेकिन एक नियमित फ़ाइल के बजाय एक निर्देशिका है, मौजूद नहीं है, लेकिन बनाई नहीं जा सकती है, या किसी अन्य कारण से नहीं खोली जा सकती है
मेरे पास अन्य शब्द बहुत सारे मामले हो सकते हैं जहां आपको FileNotFoundException अर्थ मिलेगा "आपकी फ़ाइल नहीं बना सकता", लेकिन आप इसका कारण नहीं खोज पाएंगे कि फ़ाइल निर्माण विफल क्यों हुआ।
एक समाधान फ़ाइल एपीआई के लिए किसी भी कॉल को हटाने और इसके बजाय फ़ाइलों एपीआई का उपयोग करने के लिए है क्योंकि यह बहुत बेहतर त्रुटि से निपटने प्रदान करता है। आमतौर पर किसी के new FileOutputStream(f)
साथ बदलें Files.newOutputStream(p)
।
ऐसे मामलों में जहां आपको फ़ाइल एपीआई का उपयोग करने की आवश्यकता होती है (क्योंकि आप उदाहरण के लिए फ़ाइल का उपयोग करके एक बाहरी इंटरफ़ेस का उपयोग करते हैं), Files.createFile(p)
यह सुनिश्चित करने का एक अच्छा तरीका है कि आपकी फ़ाइल ठीक से बनाई गई है और यदि आपको नहीं पता कि यह काम क्यों नहीं किया है। कुछ लोगों ने ऊपर टिप्पणी की कि यह बेमानी है। यह सच है, लेकिन आपको बेहतर त्रुटि से निपटने में मदद मिलती है जो कुछ मामलों में आवश्यक हो सकती है।