【问题标题】:Error while deleting a file from SD card从 SD 卡中删除文件时出错
【发布时间】:2016-08-24 10:09:24
【问题描述】:

当我删除文件时,代码正在运行并向我显示已删除文件的 toast,但不从 SD 卡删除它。 代码如下:

delete_btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v){
             fn = baseAppDir.getPath()+ File.separator + folderName + File.separator
                     + folderName + "_" + Integer.toString(imgNo) + ".jpg";
            FileName = folderName + "_" + Integer.toString(imgNo)
                    + ".jpg";


            if (FileName!=null)
            {
                  deleteFile(FileName);
                Toast.makeText(ImageCaptureActivity.this, "Deleted",
                        Toast.LENGTH_LONG).show();
                image1.setVisibility(View.GONE);


                } else {
                Toast.makeText(ImageCaptureActivity.this, "Not Deleted",
                        Toast.LENGTH_LONG).show();
                }



        }});

【问题讨论】:

  • 显示您的 toast 是因为 FileName!=null。没有其他原因。在显示 toast 之前,您应该检查 deleteFile() 的返回值。
  • "Not Deleted"。那应该是FileName==null
  • 如果你不给我们错误代码,我们怎么知道发生了什么?

标签: android image android-studio android-camera


【解决方案1】:

看看下面的:Delete a file

你可以这样做:

try {
        deleteFile(FileName);
        Toast.makeText(ImageCaptureActivity.this, "Deleted", Toast.LENGTH_LONG).show();
        image1.setVisibility(View.GONE);
    } catch (NoSuchFileException x) {
        System.err.format("%s: no such" + " file or directory%n", path);
    } catch (DirectoryNotEmptyException x) {
        System.err.format("%s not empty%n", path);
    } catch (IOException x) {
        // File permission problems are caught here.
        System.err.println(x);
    }

【讨论】:

    【解决方案2】:

    试试这个可能也很有帮助..

    File dir = new File(Environment.getExternalStorageDirectory() + "/DCIM/Camera");
        Log.e(TAG, " get path ..**... " + dir.getPath());
        Log.e(TAG, " get Directory ..**... " + dir.isDirectory());
        Log.e(TAG, " get Name  ..**... " + dir.getName());
        Log.e(TAG, " get strign  ..**... " + dir.list());
        if (dir.isDirectory()) {
            String[] children = dir.list();
            Log.e(TAG, " children .... ... " + children.length);
            for (int i = 0; i < children.length; i++) {
                Log.e(TAG, "Delete old Image ...");
                new File(dir, children[i]).delete();
            }
        }
    

    这是从SD 卡中删除多个图像的代码。

    【讨论】:

      【解决方案3】:

      替换

      if (FileName!=null) {
           deleteFile(FileName);
           Toast.makeText(ImageCaptureActivity.this, "Deleted",
                          Toast.LENGTH_LONG).show();
           image1.setVisibility(View.GONE);
      } else {
          Toast.makeText(ImageCaptureActivity.this, "Not Deleted",
                          Toast.LENGTH_LONG).show();
      }
      

      File file = new File(FileName);
      if (file.delete()){
             Toast.makeText(ImageCaptureActivity.this, "Deleted",
                              Toast.LENGTH_LONG).show();
             image1.setVisibility(View.GONE);
      } else {
             Toast.makeText(ImageCaptureActivity.this, "Not Deleted",
                              Toast.LENGTH_LONG).show();
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        • 1970-01-01
        • 2018-07-09
        • 2011-09-28
        • 1970-01-01
        相关资源
        最近更新 更多