2012-03-11 30 views
16

का उपयोग कर निर्देशिका में फ़ाइल कैसे बनाएं, मैं सापेक्ष पथ का उपयोग कर एक नई निर्देशिका में एक फ़ाइल बनाना चाहता हूं। निर्देशिका "टीएमपी" बनाना काफी आसान है।जावा - सापेक्ष पथ

हालांकि, जब मैं फ़ाइल बनाता हूं, तो यह वर्तमान निर्देशिका में बस नया नहीं है। कोड लाइन नीचे है।

File tempfile = new File("tempfile.txt"); 

यह भी कोशिश की है:

File tempfile = new File("\\user.dir\\tmp\\tempfile.txt"); 

जाहिर है मैं गलत समझ रहा हूँ कैसे इस विधि काम करता है। आपकी सहायता की बहुत प्रशंसा की जाती है।

संपादित करें: वर्तमान में उपयोग की जाने वाली कोड लाइन के साथ-साथ मुझे लगता है कि भ्रम को दूर करने के लिए एक सापेक्ष पथ के लिए काम कर सकता है।

+1

उपरोक्त कोड एक पूर्ण पथ का उपयोग करता है: '\ user.dir \ tmp \ tempfile.txt'। मैं नहीं देखता कि यह फ़ाइल वर्तमान निर्देशिका में कैसे बनाई जा सकती है। प्रासंगिक कोड पोस्ट करें, हमें बताएं कि आप क्या करने की उम्मीद करते हैं, और इसके बजाय यह क्या करता है। –

+1

* ".. सापेक्ष पथ का उपयोग करना।" * क्या सापेक्ष है? आवेदन पत्र? कक्षा का पैकेज? सापेक्ष पर्यवेक्षक? ध्यान दें कि ए) यह एक कन्स्ट्रक्टर है, एक विधि नहीं। बी) 'user.dir' स्वचालित रूप से विस्तारित नहीं किया जाएगा। सी) जादू द्वारा प्रोग्रामिंग शायद ही कभी काम करता है, दस्तावेज पढ़ने का प्रयास करें। –

उत्तर

23
File dir = new File("tmp/test"); 
dir.mkdirs(); 
File tmp = new File(dir, "tmp.txt"); 
tmp.createNewFile(); 

Btw: परीक्षण उपयोग @Rule और TemporaryFolder वर्ग अस्थायी फ़ाइलों या फ़ोल्डरों को बनाने के लिए के लिए

+0

उसने ऐसा किया! धन्यवाद, मुझे यह पता लगाने में कुछ घंटे लग गए होंगे कि मुझे दो अलग-अलग नए फ़ाइल स्टेटमेंट की आवश्यकता है। –

+3

बस एक सिर के रूप में (आप के लिए यह पता नहीं हो सकता है) लेकिन सूर्य, एर ओरेकल, बहुत अच्छा एपीआई दस्तावेज़ है। एक बार जब आप उन्हें समझने और नेविगेट करना सीख लेते हैं, तो वे एक बड़े समय बचा सकते हैं। उदाहरण के लिए, यदि आपने फ़ाइल क्लास के उपयोगकर्ताओं के लिए उपलब्ध विभिन्न रचनाकारों को देखा है तो आपकी विशिष्ट समस्या का समाधान पता लगाया जा सकता था: http://docs.oracle।com/JavaSE/6/docs/api/जावा/कब/File.html – claymore1977

4

आप कंस्ट्रक्टर्स के साथ एक निर्देशिका करने के लिए संबंधित पथ है कि दो तर्क ले बना सकते हैं: http://docs.oracle.com/javase/6/docs/api/java/io/File.html

उदाहरण के लिए:

File tempfile = new File("user.dir/tmp", "tempfile.txt"); 

तरह से, बैकस्लैश तक "\" विंडोज पर ही इस्तेमाल किया जा सकता । लगभग सभी मामलों में आप पोर्टेबल फॉरवर्ड स्लैश का उपयोग कर सकते हैं "/"।

+5

'फाइल.सेपरेटर' के साथ क्या हुआ? – Manish

+1

* "लगभग सभी मामलों में आपको पोर्टेबल फॉरवर्ड स्लैश का उपयोग करना चाहिए" /"."* *** *** *** में *** *** आपको या तो 'फ़ाइल' कन्स्ट्रक्टर का उपयोग करना चाहिए जो 'फ़ाइल' (पैरेंट) और स्ट्रिंग स्वीकार करता है '(फ़ाइल का नाम) या 'System.getProperty (" file.separator ") का उपयोग करें। –

+0

@ गायब यह सब कम मामला होना चाहिए। –

2
String routePath = this.getClass().getClassLoader().getResource(File.separator).getPath(); 
System.out.println(routePath); 

/*for finding the path*/ 
String newLine = System.getProperty("line.separator"); 
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(routePath+File.separator+".."+File.separator+"backup.txt"), true)); 
/*file name is backup.txt and this is working.*/ 
0

माना कि आप अपनी परियोजना फ़ोल्डर पर "स्थानीय संग्रहण" है और आप रखना चाहते हैं एक पाठ या फ़ाइल का उपयोग कर जो भी फ़ाइल लिखें।

File file = new File(dir,fileName); //KEY IS DIR ex."./local-storage/" and fileName='comp.html' 

     // if file doesnt exists, then create it 
     if (! file.exists()) 
     { 
      file.createNewFile(); 
     } 

     FileWriter fw = new FileWriter(file.getAbsoluteFile()); 
     BufferedWriter bw = new BufferedWriter(fw); 
     bw.write(text); 
संबंधित मुद्दे