TL; DR
如何删除多个文件,文件名来自util.myPos
完整解释
我可以使用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);
}
}
});
}
注意此代码仅删除一个文件
答案 0 :(得分:1)
之前我遇到过同样的问题,java中没有可以同时删除多个文件的方法或实用程序,我找到的唯一方法是在循环中逐个删除它们。
因为你的代码的某些部分对我来说不清楚(setMultiEdit
和utils.myPosTitle
)我不能给你一个有用的代码解决方案。但stackoverflow中有许多线程可以帮助您修改代码。
示例代码
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 :(得分:0)
我找到了另一种方法,这种方法会逐个删除ArrayList
中的每个名字
void getDeleteFile(){
for (int i = 0;i < utils.myPosTitle.size();i++){
String thisFile = utils.myPosTitle.get(i).toString();
deleteFile(thisFile);
}
}