为什么在尝试删除文件时出现参数异常
本文关键字:参数 异常 文件 删除 为什么 | 更新日期: 2023-09-27 18:23:53
我正在运行以下代码来删除一个确实存在的文件:
try
{
var folder = ApplicationData.Current.LocalFolder;
var path = rendition.OfflineLocation.Replace(folder.Path, "");
var file = await folder.GetFileAsync(path);
await file.DeleteAsync();
}
catch (FileNotFoundException)
{
}
当运行时,file.DeleteAsync();
给出ArgumentException
,并显示消息Value does not fall within the expected range.
我在任何地方都找不到我为什么会得到这个的任何信息。有什么想法吗?
调用堆栈:
位于Windows.Storage.StorageFile.DeleteAsync()位于e:''''Services''DownloaderService.cs:line 120 中的Lightning.Services.DownloaderServices.d_36.MoveNext()
第120行是DeleteAsync行。
我怀疑您的path
值有问题。我已经写了一篇关于这个主题的博客文章,因为WinRT异常可能非常不一致和误导。
我建议两件事来帮助你弄清真相:
- 检查
StorageFile.Path
属性的值,并确保其中没有双'
,并且它确实指向ApplicationData.Current.LocalFolder
文件夹 - 尝试使用相同的路径调用
FileIO.ReadBufferAsync
。你可能会得到一个更好的例外
此外,如果您已经有完整的路径,为什么不简单地调用StorageFile.GetFileFromPathAsync
,而不是操作字符串呢?
我的猜测是,你在试图删除的路径前留下了一个斜杠——你正在替换文件夹路径,iirc不包括尾部斜杠。