2017-08-19 1 views
0

ich arbeite zur Zeit an ein Windows 10 UWP-Projekt und ich halte die folgende Ausnahme erhalten:Directory Verwendung in einem UWP Projekt

Kann nicht das Objekt von Typ ‚System.IO.FileSystemInfo []‘ eingeben 'System.Collections.Generic.IEnumerable`1 [System.IO.FileInfo]'.

und dies ist der Code, der es wirft:

DirectoryInfo dirInfo = new DirectoryInfo(path); 
FileInfo[] files = dirInfo.GetFiles(path); 

Pfad gültig ist, ich es mehrmals überprüft, ich weiß nicht, warum ich diese Ausnahme immer bin. Kann die DirectoryInfo-Klasse weiterhin in einer UWP-Anwendung verwendet werden oder sollte ich eine gleichwertige verwenden?

Antwort

1

Die Klasse DirectoryInfo gilt für UWP. Es hat jedoch viele Einschränkungen. Zum Beispiel, ob der Pfad gültig ist. Für weitere Details können Sie sich auf Skip the path: stick to the StorageFile beziehen.

Es werfen Second path fragment must not be a drive or UNC name Ausnahme, wenn ich path Parameter übergeben. Ich habe die folgende Beschreibung gefunden.

Die Suchzeichenfolge, die mit den Namen der Dateien übereinstimmt. Dieser Parameter kann eine Kombination aus gültigem Literalpfad und Platzhalterzeichen (* und?) Enthalten (siehe Anmerkungen), , unterstützt jedoch keine regulären Ausdrücke. Das Standardmuster ist "*", das alle Dateien zurückgibt.

Also ändere ich die searchPattern wie folgt, es funktioniert gut.

string root = Windows.ApplicationModel.Package.Current.InstalledLocation.Path; 
string path = root + @"\Assets\Media"; 

DirectoryInfo dirinfo = new DirectoryInfo(path); 
FileInfo[] files = dirinfo.GetFiles("head.*"); 

Ich weiß nicht, warum ich diese Ausnahme immer bin. Kann die DirectoryInfo-Klasse weiterhin in einer UWP-Anwendung verwendet werden oder sollte ich eine gleichwertige verwenden?

Die Best-Practice-Dateien in UWP abzufragen ist Ordner Picker zu verwenden, um einen Ordner auszuwählen und alle Dateien mit GetFilesAsync Methode aufzuzählen. Zum Beispiel:

var picker = new Windows.Storage.Pickers.FolderPicker(); 
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; 
picker.FileTypeFilter.Add("*"); 
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; 
var folder = await picker.PickSingleFolderAsync(); 
if(folder != null) 
{ 
    StringBuilder outputText = new StringBuilder(); 
    var query = folder.CreateFileQuery(); 
    var files = await query.GetFilesAsync(); 
    foreach (StorageFile file in files) 
    { 
     outputText.Append(file.Name + "\n"); 
    } 
} 
Verwandte Themen