wake-up-neo.com

UWP-Prüfung, wenn Datei vorhanden ist

Ich arbeite gerade an einer Windows 10 UWP App. .__ Die App muss prüfen, ob eine bestimmte PDF -Datei mit dem Namen "01-Einführung" vorhanden ist, und wenn ja, öffnen Sie sie. Ich habe bereits den Code, falls die Datei nicht existiert. Der Code unten ist was ich momentan habe:

        try
        {
            var test = await DownloadsFolder.CreateFileAsync("01-Introduction.pdf", CreationCollisionOption.FailIfExists); 
        }
        catch
        {

        }

Dieser Code funktioniert nicht ordnungsgemäß, da ich versuche, die Datei zu erstellen, um zu überprüfen, ob die Datei hier vorhanden ist. Wenn die Datei jedoch noch nicht vorhanden ist, wird eine leere Datei erstellt. Ich möchte nichts erstellen, wenn die Datei nicht vorhanden ist. Öffnen Sie einfach PDF, falls dies der Fall ist. 

Wenn möglich, möchte ich in einen Ordner schauen, der sich im Download-Ordner mit dem Namen "Meine Handbücher" befindet.

Jede Hilfe wäre sehr dankbar. 

11
James Tordoff
public async Task<bool> isFilePresent(string fileName)
{
    var item = await ApplicationData.Current.LocalFolder.TryGetItemAsync(fileName);
    return item != null;
}

Unterstützt jedoch nicht Win8/WP8.1

https://blogs.msdn.Microsoft.com/shashankyerramilli/2014/02/17/check-if-a-file-exists-in-windows-phone-8-and-winrt-without-exception/

10
lindexi

Es gibt zwei Methoden 

1) Sie können StorageFolder.GetFileAsync() verwenden, da dies auch von Windows 8.1- und WP 8.1-Geräten unterstützt wird.

try
{
   StorageFile file = await DownloadsFolder.GetFileAsync("01-Introduction.pdf");
}
catch
{
    Debug.WriteLine("File does not exits");
}

2) Oder Sie können FileInfo.Exists nur für Windows 10 UWP verwenden.

FileInfo fInfo = new FileInfo("01-Introduction.pdf");
if (!fInfo.Exists)
{
    Debug.WriteLine("File does not exits");
}
5
AbsoluteSith

System.IO.File.Exists ist ebenfalls eine UWP-Methode. Ich teste jetzt in Windows IOT. es funktioniert einfach.

2
Kursat Turkay

Dies funktionierte für mich mit meiner UWP C # -App unter Windows 10 ...

    StorageFolder app_StorageFolder = await StorageFolder.GetFolderFromPathAsync( @App.STORAGE_FOLDER_PATH );
    var item = await app_StorageFolder.TryGetItemAsync(relative_file_pathname);
    return item != null;
1
Doug Null

Das hat mir in meinem Fall geholfen:

ApplicationData.Current.LocalFolder.GetFileAsync(path).AsTask().ContinueWith(item => { 
    if (item.IsFaulted)
        return; // file not found
    else { /* process file here */ }
});

Ich mache eine Win10 IoT Core UWP-App und muss die Dateilänge statt "Exists" überprüfen, da CreateFileAsync() bereits einen leeren Dateistub erstellt. Ich brauche diesen Aufruf jedoch vorher, um den gesamten Pfad zu ermitteln, unter dem sich die Datei befindet.

So ist es:

    var destinationFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("MyFile.wow", ...);

    if (new FileInfo(destinationFile.Path).Length > 0)
        return destinationFile.Path;
0
Waescher

Sie können System.IO.File ..__ verwenden. Beispiel:

// If file located in local folder. You can do the same for other locations.
string rootPath = ApplicationData.Current.LocalFolder.Path;
string filePath = Path.Combine(rootPath, "fileName.pdf");

if (System.IO.File.Exists(filePath))
{
    // File exists
}
else
{
    // File doesn't exist
}
0
Sapan Ghafuri

Auf diese Weise kann System.IO.File.Exists(filePath)DocumentLibrary.__ nicht getestet werden, da KnownFolders.DocumentsLibrary.Path einen leeren String zurückgibt

Nächste Lösung ist sehr langsam await DownloadsFolder.GetFileAsync("01-Introduction.pdf")

IMHO ist der beste Weg, alle Dateien aus dem Ordner zu sammeln und zu überprüfen, ob der Dateiname vorhanden ist.

List<StorageFile> storageFileList = new List<StorageFile>();

storageFileList.AddRange(await KnownFolders.DocumentsLibrary.GetFilesAsync(CommonFileQuery.OrderByName));

bool fileExist = storageFileList.Any(x => x.DisplayName == "01-Introduction.pdf");
0
Jarek
public override bool Exists(string filePath)
    {
        try
        {
            string path = Path.GetDirectoryName(filePath);
            var fileName = Path.GetFileName(filePath);
            StorageFolder accessFolder = StorageFolder.GetFolderFromPathAsync(path).AsTask().GetAwaiter().GetResult();
            StorageFile file = accessFolder.GetFileAsync(fileName).AsTask().GetAwaiter().GetResult();
            return true;
        }
        catch
        {
            return false;
        }
    }
0
Ali Yousefie