Xamarin forms Deleting an image returns 是的,但我仍然可以在文件系统中看到该图像?
Xamarin forms Deleting an image returns true, but I can still see the image in the file system?
我正在使用依赖服务删除我刚刚使用 media.plugin for Xamarin 表单获取的文件:
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 函数returns true=> 文件被删除。
但我仍然可以使用 ES 文件资源管理器
在我的 phone 上看到图像
该方法的实现是:
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:
当我尝试删除一个不存在的图像时,我得到一个 false,这是预期的行为。
我很迷茫,很迷茫。我会尝试 iOS 看看是不是 bug 还是什么
更新#3:
iOS.
发生相同的行为
这非常重要,但显然这是帮助程序中的错字 class。我正在调用方法 "FileExists" 而不是 "DeleteFile"
这是正确的辅助方法:
public static bool DeleteFileByPath(string filePath)
{
return Xamarin.Forms.DependencyService.Get<IFileHelper>().DeleteFileByPath(filePath);
}
我正在使用依赖服务删除我刚刚使用 media.plugin for Xamarin 表单获取的文件:
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 函数returns true=> 文件被删除。 但我仍然可以使用 ES 文件资源管理器
在我的 phone 上看到图像该方法的实现是:
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: 当我尝试删除一个不存在的图像时,我得到一个 false,这是预期的行为。
我很迷茫,很迷茫。我会尝试 iOS 看看是不是 bug 还是什么
更新#3: iOS.
发生相同的行为这非常重要,但显然这是帮助程序中的错字 class。我正在调用方法 "FileExists" 而不是 "DeleteFile"
这是正确的辅助方法:
public static bool DeleteFileByPath(string filePath)
{
return Xamarin.Forms.DependencyService.Get<IFileHelper>().DeleteFileByPath(filePath);
}