Xamarin表单删除图像返回true,但我仍然可以在文件系统中看到图像?

时间:2018-04-03 08:21:36

标签: c# dependency-injection xamarin.forms filesystems delete-file

我正在使用Dependency服务删除我刚刚使用适用于Xamarin表单的media.plugin的文件:

var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
    {
        Directory = "CameraTakenPhotos",
        SaveToAlbum = false,
        CompressionQuality = 75,
        CustomPhotoSize = 50,
        PhotoSize = PhotoSize.MaxWidthHeight,
        MaxWidthHeight = 2000,
        DefaultCamera = CameraDevice.Rear
    });

if (file == null)
    return;
var ImagePath = file.Path;
await DisplayAlert("File Location", file.Path, "OK");

try
{
    var imageExists = Helpers.StorageHelper.FileExists(ImagePath);
}
catch (Exception ex)
{
    System.Diagnostics.Debug.WriteLine("Error occured while checking if image is available: " + ex);
}

image.Source = ImageSource.FromStream(() =>
{
    var stream = file.GetStream();
    file.Dispose();
    return stream;
});

//deleting the image
try
{
    var deletationResutl = Helpers.StorageHelper.DeleteFileByPath(ImagePath);
}
catch (Exception ex)
{
    System.Diagnostics.Debug.WriteLine("Error while deleting the image " + ex);
}

DeleteFileByPath函数返回true =>文件已删除。 但我仍然可以使用ES文件浏览器在手机上看到图像

该方法的实现是:

public bool DeleteFileByPath(string filePath)
{
    File.Delete(filePath);

    if (File.Exists(filePath))
        return false;//not deleted
    else
        return true;//deleted
}

有人可以帮我解决这个问题吗?

更新#1: 我创建了另一种方法来检查图像是否存在。它告诉我图像在那里!

所以,删除失败了,但它告诉我它第一次被删除了。这是我为测试开发的方法:

var imageExists = Helpers.StorageHelper.FileExists(ImagePath);

if(imageExists)
    await DisplayAlert("Confirmation", "Image is there", "Ok");
else
    await DisplayAlert("Confirmation", "No image was found", "Ok");

更新#2: 当我尝试删除不存在的图像时,我得到的是假的行为。

我感到困惑和迷失。我将尝试使用iOS,看看它是否是一个bug或什么

更新#3: iOS的情况也是如此。

1 个答案:

答案 0 :(得分:1)

这是非常有效的,但显然这是助手班的一个错字。我在调用方法“FileExists”而不是“DeleteFile”

这是正确的辅助方法:

LocationRequest request = LocationRequest.create();