TL;DR

एकाधिक फ़ाइलों को कैसे हटाएं, फ़ाइल नाम util.myPos से प्राप्त हुए हैं


Peniruan identitas akan menjadi cara yang bagus, tetapi membutuhkan Administrator

मैं deleteFile("fileName") पद्धति का उपयोग करके एक फ़ाइल को हटा सकता हूँ

लेकिन मैं एक साथ कई फाइलों को कैसे हटाऊं?

सभी नाम एक ArrayList में सूचीबद्ध हैं

ArrayList में फ़ाइल नाम जोड़ते समय चेक/अनचेक करने के लिए जावा कोड

OnItemClickListener getFileEditContent = new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String clickedFile = (String)parent.getItemAtPosition(position);
        setMultiEdit(clickedFile);

        // change the checkbox state
        CheckedTextView checkedTextView = ((CheckedTextView) view);
        if (checkedTextView.isChecked()) {
            ((CheckedTextView)view).setChecked(true);
            checkedTextView.setChecked(!checkedTextView.isChecked());

            utils.myPos.remove(stringEditData);

            count--;
            if(count <= 1){
                multiEdit.setEnabled(true);
            }

        } else{
            checkedTextView.setChecked(!checkedTextView.isChecked());
            utils.myPos.add(stringEditData);

            count++;
            if(count >= 2){
                multiEdit.setEnabled(false);
            }

        }
    }
};

फ़ाइल को हटाने के लिए कोड

void setMultiDelete() {
    multiDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (utils.myPosTitle == null || utils.myPosTitle.isEmpty()) {
                Toast.makeText(addressActivity.this, "Select address", Toast.LENGTH_SHORT).show();
            } else {
                String content = utils.myPosTitle.toString();
                String cutContent = content.substring(content.indexOf('[') + 1, content.lastIndexOf(']'));
                deleteFile(cutContent);

                Toast.makeText(addressActivity.this, "Deleted", Toast.LENGTH_SHORT).show();
                showDirFile(dataDr);
                utils.myPos.clear();
                count = 0;
                ArrayAdapter<String> adapter
                        = new ArrayAdapter<String>(addressActivity.this,
                        android.R.layout.simple_list_item_multiple_choice,
                        SavedFiles);
                listView.setAdapter(adapter);
            }

        }
    });
}

नोट यह कोड केवल एक फ़ाइल को हटाता है

1
Fay Zan 25 अगस्त 2016, 09:42

2 जवाब

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

मुझे एक वैकल्पिक तरीका मिला, इस तरह ArrayList से प्रत्येक नाम को एक-एक करके हटा दिया जाएगा

void getDeleteFile(){
    for (int i = 0;i < utils.myPosTitle.size();i++){
        String thisFile = utils.myPosTitle.get(i).toString();
        deleteFile(thisFile);
    }
}
1
Fay Zan 30 अगस्त 2016, 05:27

मुझे पहले भी यही समस्या थी, जावा में कोई विधि या उपयोगिता नहीं है जो एक ही समय में कई फाइलों को हटा सकती है, एकमात्र तरीका जो मुझे मिल सकता है वह उन्हें एक-एक करके लूप में हटा रहा था। उसके कारण आपके कोड के कुछ हिस्से मेरे लिए अस्पष्ट हैं (setMultiEdit और utils.myPosTitle) मैं आपको एक उपयोगी कोड समाधान नहीं दे सकता। लेकिन स्टैक ओवरफ्लो में कई सूत्र हैं जो आपके कोड को संशोधित करने में आपकी सहायता करेंगे।

नमूना कोड

private void cleaner(File directory) {

            if (directory == null)
                return;
            File[] tempDirectory = directory.listFiles();
            if (tempDirectory == null)
                return;
            for (File file : tempDirectory) {
                if (file.isFile()) {
                    if (file.delete())
                        deleteFileCount++;
                } else { // if it's directory
                    cleaner(file);
                    if (file.listFiles() != null)
                        if (file.listFiles().length == 0) // if the directory is empty (after deleting inner files)
                            if (file.delete())
                                deleteFolderCount++;
                }
            }
}

यह मेरा कार्य है कि मैं विधि पैरामीटर में किसी दिए गए निर्देशिका के भीतर सभी फ़ाइलों और निर्देशिकाओं को हटाने के लिए इसका उपयोग करता हूं।

मुझे आशा है कि यह आपको आपकी स्थिति के लिए अपने कोड को संशोधित करने का एक विचार देता है। :)

1
Saeed Zhiany 26 अगस्त 2016, 10:04