我以为这将是非常简单的存在,它可能是,和我只是找错了地方,但这里是我已经试过如何检查文件是否在Windows通用应用程序
我想检查一个文件是否存在。这是用户从FileOpenPicker
中选择的文件。所以,我需要能够检查他们选择的文件是否存在。在我的代码中,我只是设置了一个静态路径,这样我的代码示例就保持简单。
请记住,这不是为Windows手机,这是一个Windows 8.1桌面应用
尝试1
从here
private async void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (await DoesFileExistAsync("C:\\Users\\username\\Documents\\testFiles\\testFile.docx"))
{
var checkboxDialog = new MessageDialog("exists");
await checkboxDialog.ShowAsync();
}
else
{
var nopeDialog = new MessageDialog("doesn't exist");
await nopeDialog.ShowAsync();
}
}
async Task<bool> DoesFileExistAsync(string fileName)
{
try
{
//This was originally just await FolderPicker.GetFileAsync(fileName), but it didn't compile.
await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(fileName);
return true;
}
catch
{
return false;
}
}
这总是返回假。我试过用很多方式设置文件名,但没有运气。我认为这是最接近正确的,但我不能走到最后。
TRY 2
从here
private async void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.TryGetItemAsync("C:\\Users\\username\\Documents\\testFiles\\testFile.docx");
if (file != null)
{
var checkboxDialog = new MessageDialog("exists");
await checkboxDialog.ShowAsync();
}
else
{
var nopeDialog = new MessageDialog("doesn't exist");
await nopeDialog.ShowAsync();
}
}
该方法基本上是相同的,并具有相同的结果。它有FileNotFoundException
当试图TryGetItemAsync
任何帮助表示赞赏。我只想知道文件是否存在...
谢谢你的精彩答案。我确实有一个后续问题。此应用程序旨在允许用户设置自己的文件位置。我使用''FileOpenPicker'''和''Winddows.Storage.StorageFile'''来获得他们想要使用的特定文件路径。有没有办法不必使用相对路径,因为我不能确定他们将要选择的文件的位置? – trueCamelType
您需要使用相对路径,但您可以比较用户选择的文件夹(假设它有一条路径 - 并非全部都是这样)与目标。该应用只能访问拾取文件夹中的路径。 –
以防其他人发现此情况。这个问题在[这里]详细讨论(http://stackoverflow.com/questions/3137097/how-to-check-if-a-string-is-a-valid-windows-directory-folder-path)。 – trueCamelType