Android 使用file.delete()后,文件仍在手机存储器中,长度为零

Android 使用file.delete()后,文件仍在手机存储器中,长度为零,android,Android,当我重新打开时,我的应用程序文件存在且长度为零。 如何永久删除它 我正在使用列表视图显示外部存储器中使用Media Store的所有歌曲,并在其中添加了删除选项 删除文件后,当我重新打开我的应用程序时,歌曲文件再次出现在列表视图中,但文件长度为零 有关删除内容,请参见onClickListener: public class TracksFragment extends Fragment { songDetailloader loader = new songDetailloader()

当我重新打开时,我的应用程序文件存在且长度为零。
如何永久删除它

我正在使用列表视图显示外部存储器中使用Media Store的所有歌曲,并在其中添加了删除选项

删除文件后,当我重新打开我的应用程序时,歌曲文件再次出现在列表视图中,但文件长度为零

有关删除内容,请参见
onClickListener

public class TracksFragment extends Fragment {
    songDetailloader loader = new songDetailloader();
    ArrayList<Songs> give = new ArrayList<>();
    public int pos = -1;
    MediaPlayer mp ;
    MusicService musicService;
    boolean mBound;
    Context context;
    public TracksFragment() {

    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState)
    {
        View v =inflater.inflate(R.layout.listviewofsongs,container,false);
        final ListView listView = (ListView) v.findViewById(R.id.listView);
        loader.set(getContext());
        give = loader.allsongs();
        final ListViewAdapter listViewAdapter = new ListViewAdapter(getContext(),give);
        listView.setAdapter(listViewAdapter);
        listView.setSelector(R.drawable.selector);
        new Thread(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(getActivity(),MusicService.class);
                getActivity().bindService(i, serviceConnection, Context.BIND_AUTO_CREATE);
            }
        }).start();

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                Log.d("Uri of ",""+give.get(position).getSonguri());
                musicService.setplaylist(give,position);
                musicService.setMediaPlayer();
                view.setSelected(true);
            }
        });
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
                final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                View v =LayoutInflater.from(getContext()).inflate(R.layout.select_dialog_layout,null);
                builder.setView(v);
                builder.setTitle(give.get(position).gettitle()+"\n  "+give.get(position).getalbum());

                builder.create();
                final AlertDialog d=builder.show();

                //seting click listner.....
                TextView play = (TextView) v.findViewById(R.id.dialogplay);
                TextView playnext = (TextView) v.findViewById(R.id.dialogplaynext);
                TextView queue = (TextView) v.findViewById(R.id.dialogqueue);
                TextView fav = (TextView) v.findViewById(R.id.dialogaddtofav);
                TextView album = (TextView) v.findViewById(R.id.dialogalbum);
                TextView artist = (TextView) v.findViewById(R.id.dialogartist);
                TextView playlist = (TextView) v.findViewById(R.id.dialogaddtoplaylsit);
                TextView share = (TextView) v.findViewById(R.id.dialogshare);
                TextView delete = (TextView) v.findViewById(R.id.dialogdelete);

                play.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        File f= new File(give.get(position).getSonguri().getLastPathSegment());
                        Log.d("LENGTH IS",""+f.length());
                        musicService.setplaylist(give,position);
                        musicService.setMediaPlayer();
                        d.dismiss();
                    }
                });
                playnext.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();

                    }
                });
                queue.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();

                    }
                });

                fav.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();
                        DataBaseClass db = new DataBaseClass(getContext());
                        int i=db.insetintoliked(give.get(position));
                        if(i==1)
                        {
                            Toast.makeText(getContext(),"Added to Favorites",Toast.LENGTH_SHORT).show();
                        }
                        else
                            Toast.makeText(getContext(),"Already in Favorites",Toast.LENGTH_SHORT).show();
                    }
                });

                album.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();
                        Intent i = new Intent( getActivity() , AlbumDetail.class);
                        Bundle b= new Bundle();
                        b.putCharSequence("album",give.get(position).getalbum());
                        i.putExtras(b);
                        startActivity(i);
                    }
                });

                artist.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();

                    }
                });
                playlist.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();

                    }
                });
                delete.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        AlertDialog.Builder b = new AlertDialog.Builder(getContext());
                            b.setMessage("Audio '"+give.get(position).gettitle()+"' will be deleted permanently !");
                            b.setTitle("Delete ?");
                            b.setNegativeButton("No", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    d.dismiss();
                                }
                            });
                            b.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                               loader.deleteSong(getContext(),give.get(position).getPosition());

                                File f= new File(give.get(position).getSonguri().getPath());
                                boolean b = f.delete();
                                Log.d("Is file exist",f.exists()+"");
                                Log.d("File Length",""+f.length());
                                Log.d("Return value",""+b);

                                give.remove(position); // give is Arraylist of Songs(datatype);
                                listViewAdapter.notifyDataSetChanged();
                                if(b)
                                {
                                    Toast.makeText(getContext(),"Deleted",Toast.LENGTH_SHORT).show();
                                }
                                else
                                {
                                    Toast.makeText(getContext(),"Fail to Delete",Toast.LENGTH_SHORT).show();
                                }

                            }
                        });
                        b.create().show();
                        d.dismiss();

                    }
                });
                share.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        d.dismiss();
                        Intent share = new Intent(Intent.ACTION_SEND);
                        share.setType("audio/*");`enter code here`
                        share.putExtra(Intent.EXTRA_STREAM, give.get(position).getSonguri());
                        startActivity(Intent.createChooser(share, "Share Sound File"));
                    }
                });

                return true;
            }
        });

        container.addView(v);
        return v;
    }
}

实际文件是否存在(通过文件浏览器),或者是否存在,因为您尚未更新MediaStore,并且MediaStore有一个孤立条目?f.exists()的输出是什么??欢迎!如果您有一些代码可以帮助您解答问题,请将其作为MCVE复制到您的问题中。使用正确的格式标记代码(一行空白,然后将代码缩进四个空格)。更多关于StackOverflow markdown:和MCVE:当我再次尝试删除之前删除的同一个歌曲文件时,会生成这些日志。问题是为什么在第一次尝试时此文件未被完全删除。并且关于此文件的所有元数据仍然存在。f.exists()在第一次尝试时返回true,在第二次尝试时返回false,因为日志catIs中存在实际文件(通过文件浏览器),或者是因为您没有更新MediaStore,并且MediaStore有一个孤立项?f.exists()的输出是什么??欢迎!如果您有一些代码可以帮助您解答问题,请将其作为MCVE复制到您的问题中。使用正确的格式标记代码(一行空白,然后将代码缩进四个空格)。更多关于StackOverflow markdown:和MCVE:当我再次尝试删除之前删除的同一个歌曲文件时,会生成这些日志。问题是为什么在第一次尝试时此文件未被完全删除。并且关于该文件的所有元数据仍然存在。f.exists()在第一次尝试时返回true,在第二次尝试时返回false,如log cat中所示
01-14 05:19:54.189 18010-18010/com.developmentforfun.mdnafiskhan.mp3player D/Is file exist: false
01-14 05:19:54.190 18010-18010/com.developmentforfun.mdnafiskhan.mp3player D/File Lenth:0
01-14 05:19:54.190 18010-18010/com.developmentforfun.mdnafiskhan.mp3player D/Return value: false