2010-07-20 9 views
9

के साथ बनाई गई फ़ाइलों को हटाने से मैं एंड्रॉइड मंच के लिए विकास कर रहा हूं।FileOutputStream

FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode); 

यह ठीक काम करता है क्योंकि मैं इसे करने के लिए लिख सकते हैं और यह आम तौर पर पढ़ सकते हैं:
मेरा ऐप के लिए एक सरल कॉल के साथ एक अस्थायी फ़ाइल बनाता है।

समस्या यह है कि जब मैं ऐप से बाहर निकलता हूं तो मैं इस फ़ाइल को हटाना चाहता हूं। मैं प्रयोग किया है:

File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT"); 
f.delete() 

लेकिन यह हमेशा गलत वापस आती है और फ़ाइल हटा नहीं है।
मैं कोशिश की है:

File f = new File("MY_TEMP.TXT"); 
f.delete(); 

और यह या तो काम नहीं करता।

उत्तर

10

मैंने इस पोस्टिंग पर जांच की है और FileOutputStream से बनाई गई फ़ाइल को हटाने का सबसे अच्छा तरीका कॉन्टेक्स्ट विधि deleteFile (TEMP_FILE) से सरल सरल है।

+0

यह सही है! यह बेहद सरल है! बस deleteFile (TEMP_FILE) को कॉल करना; यह सीधे प्रोफ़ाइल को सौंपा गया फ़ोल्डर पर जाता है और यह दस्तावेज़ीकरण के अनुसार पोर्टेबल है। यह मेरी ज़रूरत के लिए काम करता है। वाह मैं पूरी तरह से गलत ट्रैक पर था! वैसे भी, सही दिशा में मुझे इंगित करने के लिए आप सभी लोगों को धन्यवाद। –

+0

हाँ, यह FileOutputStream के साथ बनाई गई फ़ाइल को हटाने का सबसे तेज़ तरीका है – anticafe

7

आप एक खुली फ़ाइल को हटा नहीं सकते हैं। हटाने से पहले आपको स्ट्रीम बंद करने की आवश्यकता है।

fos.close(); 
f.delete(); 

कहा कि, मैं नहीं बल्कि File#createTempFile() का प्रयोग करेंगे अंतर्निहित मंच जाने के लिए स्वत: सफाई का काम करते हैं और संभावित पोर्टेबिलिटी File में संबंधित पथ का उपयोग कर की वजह से मुसीबत से बचने के लिए।

+1

'createTempFile' के डॉक्स से:" इस विधि एक अस्थायी फ़ाइल सुविधा का ही हिस्सा प्रदान करता है की व्यवस्था करने के लिए इस विधि के द्वारा बनाई गई किसी फ़ाइल के लिए स्वचालित रूप से हटाए जाने के लिए, 'deleteOnExit()' विधि का उपयोग करें।। " – Powerlord

+0

आर बेमेरोस: एक सभ्य ओएस समय-समय पर अस्थायी निर्देशिका को साफ़ करता है। – BalusC

+1

@ बालससी: यह शर्म की बात है कि विंडोज एक सभ्य ओएस नहीं है। ;) और मैं एंड्रॉइड के लिए बात नहीं कर सकता कि यह कैसे संभालेगा। – Powerlord

0

डबल-चेक, यदि फ़ाइल को हटाने का प्रयास करने से पहले स्ट्रीम बंद है।

0

आपके पास पहले से ही कुछ ठोस उत्तर हैं, लेकिन मैं सिर्फ File.deleteOnExit() का उल्लेख करना चाहता हूं जो VM बाहर निकलने पर हटाने के लिए फ़ाइल शेड्यूल करता है।

--edit--

तुम अब भी फ़ाइल से जुड़े किसी भी धाराओं बंद हो जाना चाहिए।

+0

जब आप फ़ाइल बंद नहीं करते हैं तो यह काम नहीं करेगा। – BalusC

+0

मैं यह नहीं कह रहा हूं कि यह होगा। फ़ाइलों को हटाने का एक और तरीका :) – willcodejavaforfood

1

आपको इसे हटाने से पहले फ़ाइल को बंद करने की आवश्यकता है। नीचे कोड का प्रयोग करें।

 FileOutputStream fos = openFileOutput("MY_TEMP.TXT",Mode); 
     File f = new File(System.getProperty("user.dir"),"MY_TEMP.TXT"); 
     fos.close(); 
     File f = new File("MY_TEMP.TXT"); 
     f.delete(); 
संबंधित मुद्दे