मैं एक सूची में सभी फाइलों के लिए यूरी संग्रहीत कर रहा हूं जो निर्देशिका में हैं

"/storage/emulated/0/Android/data/com.pratiksahu.dokify/"

यह वह फंक्शन है जिसका उपयोग फाइलों को हटाने के लिए किया जाता है

fun setupDeleteImageButtonListener() {
        deleteFileButton.setOnClickListener {
            if(selectedItemsImage.size>0)
            selectedItemsImage.forEach {
                File("/storage/emulated/0/Android/data/com.pratiksahu.dokify/", it.path).delete()
                    .let { result ->
                        Log.d(TAG_DELETE, it.path + " <-- $result")
                    }
            }
            selectedItemsImage.clear() //using this to store image uri
            selectedItems.clear() //using this to store index which is being used in recyclerview with checkbox
            importedImagesAdapter?.setSelectedItems(selectedItems) //updating checkbox selected items
            imageList.clear() //Clearing list which is retrieved from scanning the directory when app starts
            imagePagerViewModel.initImages() // Refreshing available files list (Contains uri)
            importedImagesAdapter?.items = imageList //Setting new list to adapter
        }
    }

मैं पहले बैच में फ़ाइलों को हटाने में सक्षम हूं, लेकिन अगर मैं दूसरे बैच में फ़ाइलों को हटाने का प्रयास करता हूं, तो File.delete() फ़ाइल को खोजने में सक्षम नहीं है, हालांकि यह निर्देशिका में मौजूद है

enter image description here

0
Pratik 26 सितंबर 2020, 20:28

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि मिली, मैं निर्देशिका को स्कैन कर रहा था और यूरी को संग्रहीत कर रहा था जिसमें पूरा पथ था

fun initImages() {
        _loading.value = true
        val path  = "/storage/emulated/0/Android/data/com.pratiksahu.dokify/files/Pictures"
        val directory = File(path)
        if (directory.exists())
        {
            val files: Array<File> = directory.listFiles()
            if (files.size > 0) {
                Arrays.sort(files, Comparator.comparingLong(File::lastModified).reversed())
                val tempDocInfoList = ArrayList<DocInfo>()
                for (i in files.indices) {
                    val tempDocInfo = DocInfo(files[i].toUri() , files[i].name , files[i].length().toString())
                    tempDocInfoList.add(tempDocInfo)
                }
                setImage(tempDocInfoList)
            }
        }
        _loading.value = false
    }

अन्य परिदृश्यों के विपरीत जहां अगर मैं गैलरी या कैमरे से आयात करने का प्रयास करता हूं तो इसमें पूर्ण पथ नहीं होगा। तो मुझे अपने कोड में बस इतना ही बदलना था

File("/storage/emulated/0/Android/data/com.pratiksahu.dokify/", it.path)

into 

File(it.path)
0
Pratik 26 सितंबर 2020, 18:57