অভ্যন্তরীণ স্টোরেজ থেকে ফাইল মুছুন


95

আমি অভ্যন্তরীণ স্টোরেজে থাকা চিত্রগুলি মুছে ফেলার চেষ্টা করছি। আমি এ পর্যন্ত এ পর্যন্ত এসেছি:

File dir = getFilesDir();
File file = new File(dir, id+".jpg");
boolean deleted = file.delete();

এবং এটি অন্য একটি প্রশ্ন থেকে, যার উত্তর দেওয়া হয়েছিল :

File dir = getFilesDir();
File file = new File(dir, "my_filename");
boolean deleted = file.delete();

আমার উদাহরণ সর্বদা মিথ্যা প্রত্যাবর্তন করে। আমি fx 2930.jpgডিডিএমএস-এ ফাইলটিগ্রহণের সাথে দেখতে পাচ্ছি ।

উত্তর:


139

getFilesDir()একরকম কাজ করে নি। এমন একটি পদ্ধতি ব্যবহার করে, যা পুরো পথটি দেয় এবং ফাইলের নামটি পছন্দসই ফলাফল দেয়। কোডটি এখানে:

File file = new File(inputHandle.getImgPath(id));
boolean deleted = file.delete();

কোথায় inputHandle.getImgPath(id)হয় filePath
প্রতীক Butani

45

আপনি কি Context.deleteFile () চেষ্টা করেছেন ?


Contex.deletFile () দিয়ে কোনও বৈকল্পিক চেষ্টা করেছেন, যা কাজ করে না। নীচে যা কাজ করেছে বলে মনে হচ্ছে।
গণনা

@ user661543 ih.getImgPath () দ্বারা পূর্ণ পথটি কী ফিরে এসেছে? আপনি ফাইলটি মোছার যুক্তি হিসাবে কী পাস করেছেন? যদি উপরের পদ্ধতিটি কাজ না করে তবে সম্ভবত আপনার ফাইলটি অ্যাপ্লিকেশন প্যাকেজ থেকে সঞ্চিত। অথবা আপনি হয়ত যুক্তি হিসাবে ভুল ফাইলের নামটি পাস করেছেন।
কনস্ট্যান্টিন বুড়ভ

+1 এর মাধ্যমে লিখিত ফাইল সরানোর সহজতম উপায়new OutputStreamWriter(context.openFileOutput(fileName, Context.MODE_PRIVATE)).write(data);
ইউজেন

18

এটি আমার পক্ষে কাজ করে:

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

context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));

14
String dir = getFilesDir().getAbsolutePath();
File f0 = new File(dir, "myFile");
boolean d0 = f0.delete(); 
Log.w("Delete Check", "File deleted: " + dir + "/myFile " + d0);

কোডটি File dir = getFilesDir();কাজ করে না কারণ এটি কোনও ফাইলের জন্য অনুরোধ। আপনি স্ট্রিংটি পুনরুদ্ধার করার চেষ্টা করছেন যা আপনার ডিরেক্টরিতে পাথ ঘোষণা করে, সুতরাং আপনাকে 'dir' স্ট্রিং হিসাবে ঘোষণা করতে হবে, এবং তারপরে স্ট্রিং ফর্মের ডিরেক্টরিটির পরম পথটি সেই কনস্ট্রাক্টরের কাছে ফিরে আসতে অনুরোধ করবে যাতে সেই তথ্যে অ্যাক্সেস রয়েছে ।


10

আপনি এটি ব্যবহার করতে পারেন: file.getCanonicalFile().delete();


2

আপনি চেষ্টা করেছেন getFilesDir().getAbsolutePath()?

পুরো পথ দিয়ে ফাইল অবজেক্টের সূচনা করে আপনি নিজের সমস্যার সমাধান করেছেন বলে মনে হচ্ছে। আমি বিশ্বাস করি এটিও কৌশলটি করবে।


0

এটি একটি পুরানো বিষয়, তবে আমি আমার অভিজ্ঞতা যুক্ত করব, সম্ভবত কেউ এটির সহায়ক বলে মনে করছেন

>     2019-11-12 20:05:50.178 27764-27764/com.strba.myapplicationx I/File: /storage/emulated/0/Android/data/com.strba.myapplicationx/files/Readings/JPEG_20191112_200550_4444350520538787768.jpg//file when it was created

2019-11-12 20:05:58.801 27764-27764/com.strba.myapplicationx I/File: content://com.strba.myapplicationx.fileprovider/my_images/JPEG_20191112_200550_4444350520538787768.jpg //same file when trying to delete it

সমাধান 1:

              Uri uriDelete=Uri.parse (adapter.getNoteAt (viewHolder.getAdapterPosition ()).getImageuri ());//getter getImageuri on my object from adapter that returns String with content uri

এখানে আমি বিষয়বস্তু সমাধানকারীকে আরম্ভ করি এবং সেই ইউআরআই এর পাস হওয়া প্যারামিটার দিয়ে এটি মুছি

            ContentResolver contentResolver = getContentResolver ();
            contentResolver.delete (uriDelete,null ,null );

সমাধান 2 (আমার প্রথম সমাধান - এই মুহুর্তে আমি তা জানি না): বিষয়বস্তু সমাধানের ব্যবস্থা রয়েছে ...

              String path = "/storage/emulated/0/Android/data/com.strba.myapplicationx/files/Readings/" +
                    adapter.getNoteAt (viewHolder.getAdapterPosition ()).getImageuri ().substring (58);

            File file = new File (path);
            if (file != null) {
                file.delete ();
            }

আশা করি এটি সুখী কোডিং কারো পক্ষে সহায়ক হবে


0
File file = new File(getFilePath(imageUri.getValue())); 
boolean b = file.delete();

আমার ক্ষেত্রে কাজ করছে না।

boolean b = file.delete();                 // returns false
boolean b = file.getAbsolutePath.delete(); // returns false 

সর্বদা মিথ্যা প্রত্যাবর্তন।

নীচের কোডটি ব্যবহার করে সমস্যার সমাধান করা হয়েছে:

ContentResolver contentResolver = getContentResolver();
contentResolver.delete(uriDelete, null, null);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.