2017-05-22 78 views
0

我想解析用戶可以選擇的文件夾。 但是,如果我明白,UWP中不允許絕對路徑,因爲磁盤跟媒體(xbox,windows phone,windows desktop,...)不一樣?UWP從絕對路徑或相對路徑解析文件夾

所以,我有一個叫Parser的類,它可以解析用戶選擇的路徑,但現在只能解析當前文件夾。

這不起作用:

Parser parser = new Parser(@"C:\a\b\c"); 
parser.createTreeView(tree); 

請幫助我。先謝謝你。

編輯:這是我的分析器類=>

public TreeViewItem Parse(DirectoryInfo directoryInfo) 
    { 
     try 
     { 
      var directoryNode = new TreeViewItem { Header = directoryInfo.Name }; 
      Convention convention = new Convention(); 

      foreach (var directory in directoryInfo.GetDirectories()) 
      { 

       directoryNode.Items.Add(Parse(directory)); 
       System.Diagnostics.Debug.WriteLine("test : " + directory.Name); 
      } 
      foreach (var file in directoryInfo.GetFiles()) 
      { 
       if (file.Name.Contains(EConvention.INSTALL)) 
       { 
        listFiles.Add(file.FullName); 
       } 

       TreeViewItem item = new TreeViewItem 
       { 
        Header = Path.GetFileNameWithoutExtension(file.FullName), 
        Tag = file.FullName 

       }; 
       directoryNode.Items.Add(item); 
      } 
      return directoryNode; 
     } 
     catch (System.UnauthorizedAccessException e) 
     { 
      //MessageDialog dialog = new MessageDialog(""+e.Message); 
      dialogAsync(e.Message); 
      return new TreeViewItem(); 
     } 

    } 


public void CreateTreeView(TreeView tree) 
    { 

     DirectoryInfo dir = new DirectoryInfo(pathToParse); 
     System.Diagnostics.Debug.WriteLine("dir exists ? "+dir.Exists); 
     if (dir.Exists) 
     { 
      System.Diagnostics.Debug.WriteLine("dir existe"); 
      TreeViewItem root = new TreeViewItem() { Header = dir.Name }; 
      root.Tag = dir; 
      tree.Items.Add(Parse(dir)); 
     } 
    } 
+1

「解析文件夾」是什麼意思?向我們展示'Parser'類的完整代碼也會有所幫助 – GGG

+0

我想解析一個文件夾來創建一個TreeView。我編輯我的問題向你展示我的解析器類。 –

+0

那麼如何以及以何種方式解析任何其他文件夾? – BugFinder

回答

1

UWP應用程序沒有權限訪問該設備上的所有文件。應用程序默認可以訪問某些文件系統位置。應用程序還可以通過文件選擇器或通過聲明功能訪問其他位置。欲瞭解更多信息,請參閱

雖然,我們可以在UWP應用程序使用DirectoryInfo,但它只能與UWP應用程序可以在默認情況下,如安裝目錄,本地文件夾等訪問這些文件夾的工作大多數類型的System.IO namespaces for UWP apps也有類似的限制。在處理UWP中的文件或文件夾時,一個重要規則是Skip the path: stick to the StorageFile

您可以使用Folder​Picker讓用戶選擇一個文件夾,然後將其添加到您的應用程序的FutureAccessListMostRecentlyUsedList以跟蹤它。您可以在How to track recently-used files and folders中瞭解有關使用這些列表的更多信息。在此之後,只要您想使用它,您就可以從FutureAccessListMostRecentlyUsedList中檢索StorageFolder

一旦你的StorageFolder,你就可以在你的Parse而不是DirectoryInfo.GetDirectoriesDirectoryInfo.GetFiles方法使用GetFilesAsync()GetFoldersAsync()方法。