2010-08-10 11 views
10

मैं क्या करना चाहता हूं: मेरे ऐप में निजी आंतरिक संग्रहण से एक छवि फ़ाइल हटाएं। मैं आंतरिक भंडारण में छवियों को सहेजता हूं ताकि वे ऐप अनइंस्टॉल पर हटा दिए जाएं।एंड्रॉइड: आंतरिक छवि फ़ाइल को कैसे हटाएं

मैं सफलतापूर्वक बना लिया है और बचाया:

String imageName = System.currentTimeMillis() + ".jpeg"; 
FileOutputStream fos = openFileOutput(imageName, Context.MODE_PRIVATE); 
bitmap.compress(Bitmap.CompressFormat.JPEG, 35, fos); 

एक छवि है कि मैं के माध्यम से

bitmap = BitmapFactory.decodeStream(inputStream); 

मैं प्रदर्शन के लिए बाद में चित्र प्राप्त करने में सक्षम हूँ प्राप्त करते हैं:

FileInputStream fis = openFileInput(imageName); 
ByteArrayOutputStream bufStream = new ByteArrayOutputStream(); 
DataOutputStream outWriter = new DataOutputStream(bufStream); 

int ch; 
while((ch = fis.read()) != -1) 
    outWriter.write(ch); 

outWriter.close(); 
byte[] data = bufStream.toByteArray(); 
bufStream.close(); 
fis.close(); 

imageBitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 

मैं अब इस फ़ाइल को स्थायी रूप से मिटाना चाहते हैं। मैं एक नई फ़ाइल बनाने और इसे हटाने की कोशिश की है, लेकिन फाइल नहीं पाया जाता है:

File file = new File(imageName); 
file.delete(); 

मैं Android डेवलपर वेबसाइट है कि मैं openFileInput(...) विधि है जो एक InputStream मुझे अनुमति देता है देता है का उपयोग करते हुए निजी आंतरिक फ़ाइलों को खोलने चाहिए पर पढ़ लिया है सामग्री को पढ़ने के लिए, जिसे मैं वास्तव में परवाह नहीं करता - मैं बस इसे हटाना चाहता हूं।

क्या कोई मुझे आंतरिक संग्रहण में संग्रहीत फ़ाइल को हटाने के लिए सही दिशा में इंगित कर सकता है?

उत्तर

23

एआरजी, मुझे जवाब मिल गया। सरल जवाब भी :(

आपको बस इतना करना है deleteFile(imageName) विधि कहते हैं।

if(activity.deleteFile(imageName)) 
    Log.i(TAG, "Image deleted."); 

हो गया!

+1

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

+1

@ बिस्क्लेवेट क्या आप सुनिश्चित हैं कि फ़ाइल आंतरिक ऐप स्टोरेज में सहेजी गई है? – binnyb

+0

मैं एक अलग उपयोग कर रहा हूं विधि अब, लेकिन ऐसा इसलिए हो सकता है क्योंकि मेरे पास मेनिफेस्ट में सक्रिय WRITE_EXTERNAL_STORAGE अनुमतियां नहीं थीं। धन्यवाद आपकी प्रतिक्रिया के लिए और मुझे उम्मीद है कि यह किसी और की मदद करेगा। – Bisclavret