Android DeleteFile.IllegalArgumentException

Android DeleteFile.IllegalArgumentException,android,listview,illegalargumentexception,Android,Listview,Illegalargumentexception,我是初学者,如果这个问题太愚蠢,我道歉。我尝试创建一个文件管理器。我想用AlertDialog实现删除文件,但是由于我的努力没有成功。我发布了我的最后一个代码。当我确认删除时,出现一个错误:794-794/standardAndroid.ru.filemanager E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.IllegalArgumentException: File /d contains a path separator

我是初学者,如果这个问题太愚蠢,我道歉。我尝试创建一个文件管理器。我想用AlertDialog实现删除文件,但是由于我的努力没有成功。我发布了我的最后一个代码。当我确认删除时,出现一个错误:794-794/standardAndroid.ru.filemanager

E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalArgumentException: File /d contains a path separator
            at android.app.ContextImpl.makeFilename(ContextImpl.java:1672)
            at android.app.ContextImpl.deleteFile(ContextImpl.java:671)
            at android.content.ContextWrapper.deleteFile(ContextWrapper.java:170)
            at standandroid.ru.filemanager.MainActivity$2$1.onClick(MainActivity.java:134)
            at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
我知道演播室说我的参数有错误,但我不明白为什么他们错了……提前谢谢

   public class MainActivity extends Activity implements AdapterView.OnItemClickListener {
private  String path;
private String selectedItem;
private final Context context=this;
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView listView = (ListView)findViewById(R.id.list);
    listView.setOnItemClickListener(this);


    final ListView finalListView = listView;
    path = "/";
    if (getIntent().hasExtra("path")) {
        path = getIntent().getStringExtra("path");
    }
    setTitle(path);

    // Read all files sorted into the values-array
    List values = new ArrayList();
    File dir = new File(path);
    if (!dir.canRead()) {
        setTitle(getTitle() + " (inaccessible)");
    }
    String[] list = dir.list();
    if (list != null) {
        for (String file : list) {
            if (!file.startsWith(".")) {
                values.add(file);
            }
        }
    }
    Collections.sort(values);

    // Put the data into the list
    ArrayAdapter adapter = new ArrayAdapter(this,
            android.R.layout.simple_list_item_2, android.R.id.text1, values);
    listView = (ListView)findViewById(R.id.list);
    listView.setAdapter(adapter);

    AdapterView.OnItemLongClickListener itemLongClickListener=new       AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

           selectedItem=parent.getItemAtPosition(position).toString();
             final String filename = (String)       finalListView.getAdapter().getItem(position);

            AlertDialog.Builder builder=new AlertDialog.Builder(context);
            builder.setMessage("Вы хотите удалить"+selectedItem+"?");
            builder.setCancelable(false);
            builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {


               deleteFile(path+filename);



        }
    });

    builder.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
    builder.show();
    return true;
}};

 listView.setOnItemLongClickListener(itemLongClickListener);
    }
           public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    ListView listView = (ListView)findViewById(R.id.list);
    String filename = (String) listView.getAdapter().getItem(position);
    if (path.endsWith(File.separator)) {
        filename = path + filename;
    } else {
        filename = path + File.separator + filename;
    }
    if (new File(filename).isDirectory()) {
        Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("path", filename);
        startActivity(intent);
    } else {
        Toast.makeText(this, filename + " is not a directory", Toast.LENGTH_LONG).show();
    }
}}
公共类MainActivity扩展活动实现AdapterView.OnItemClickListener{
私有字符串路径;
私有字符串selectedItem;
私有最终上下文=此;
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView ListView=(ListView)findViewById(R.id.list);
setOnItemClickListener(this);
最终ListView finalListView=ListView;
path=“/”;
if(getIntent().hasExtra(“路径”)){
path=getIntent().getStringExtra(“路径”);
}
设置标题(路径);
//读取排序到值数组中的所有文件
列表值=新的ArrayList();
文件目录=新文件(路径);
如果(!dir.canRead()){
setTitle(getTitle()+“(不可访问)”;
}
String[]list=dir.list();
如果(列表!=null){
用于(字符串文件:列表){
如果(!file.startsWith(“.”){
添加(文件);
}
}
}
集合。排序(值);
//将数据放入列表中
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple_list_item_2,android.R.id.text1,值);
listView=(listView)findViewById(R.id.list);
setAdapter(适配器);
AdapterView.OnItemLongClickListener项LongClickListener=新AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
selectedItem=parent.getItemAtPosition(position.toString();
最终字符串文件名=(字符串)finalListView.getAdapter().getItem(位置);
AlertDialog.Builder=新建AlertDialog.Builder(上下文);
建造商设置消息(“选择项+”);
builder.setCancelable(false);
builder.setPositiveButton(“аа”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
删除文件(路径+文件名);
}
});
builder.setNegativeButton(“цц”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.cancel();
}
});
builder.show();
返回true;
}};
setOnItemLongClickListener(itemLongClickListener);
}
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
ListView ListView=(ListView)findViewById(R.id.list);
字符串文件名=(字符串)listView.getAdapter().getItem(位置);
if(path.endsWith(File.separator)){
文件名=路径+文件名;
}否则{
filename=path+File.separator+filename;
}
if(新文件(文件名).isDirectory()){
意向意向=新意向(此,MainActivity.class);
intent.putExtra(“路径”,文件名);
星触觉(意向);
}否则{
Toast.makeText(这个文件名+“不是目录”,Toast.LENGTH_LONG.show();
}
}}

deleteFile函数不能采用路径,它只能采用不带分隔符的文件名(假定采用该路径)。要删除完整路径,请为其创建一个文件对象并通过该对象删除它。

我还尝试使用public void DeleteRecursive(字符串文件名){File File File=new File(文件名);if(!File.exists())return;if(!File.isDirectory()){File.delete();return;}String[]files=file.list();for(int i=0;i