Windows runtime 脱书本。我尝试将书中的所有配方(代码片段)翻译成适用于Windows应用商店应用程序的.NET API。即使我不确定食谱是否有用,它也可能对读这本书的人有用。我同意完整路径在常规Windows应用商店应用程序中没有实际意义。但是,如果声明了PrivateN

Windows runtime 脱书本。我尝试将书中的所有配方(代码片段)翻译成适用于Windows应用商店应用程序的.NET API。即使我不确定食谱是否有用,它也可能对读这本书的人有用。我同意完整路径在常规Windows应用商店应用程序中没有实际意义。但是,如果声明了PrivateN,windows-runtime,windows-store-apps,winrt-xaml,Windows Runtime,Windows Store Apps,Winrt Xaml,脱书本。我尝试将书中的所有配方(代码片段)翻译成适用于Windows应用商店应用程序的.NET API。即使我不确定食谱是否有用,它也可能对读这本书的人有用。我同意完整路径在常规Windows应用商店应用程序中没有实际意义。但是,如果声明了PrivateNetworkClientServer和EnterpriseAuthentication或HomeGroup的功能,则它们在使用StorageFolder.GetFolderFromPathAsync和StorageFile.GetFileFro


脱书本。我尝试将书中的所有配方(代码片段)翻译成适用于Windows应用商店应用程序的.NET API。即使我不确定食谱是否有用,它也可能对读这本书的人有用。我同意完整路径在常规Windows应用商店应用程序中没有实际意义。但是,如果声明了PrivateNetworkClientServer和EnterpriseAuthentication或HomeGroup的功能,则它们在使用StorageFolder.GetFolderFromPathAsync和StorageFile.GetFileFromPathAsync时可能有意义。我只是尝试使用StorageFile.GetFileFromPathAsync访问文件夹和文件,并传递完整的UNC路径或完整路径到可移动存储设备上的文件。如果分别声明了“PrivateNetworkClientServer”和“可移动存储”功能,则它可以工作。UNC路径甚至可以处理本地文件!因此,至少在公司环境中(直接安装应用程序,跳过商店和认证),使用完整路径是非常有意义的。。。或者使用应用程序数据文件夹(ApplicationData.Current)或下载文件夹(DownloadsFolder)或使用文件选择器或文件夹选择器的其他文件夹。。。或者(根据文档)在某些情况下使用UNC的任何网络文件夹(请参阅)。。或者如果声明了“可移动存储”功能,则用户可以访问可移动存储设备上的任何文件。。或者使用应用程序数据文件夹(ApplicationData.Current)或下载文件夹(DownloadsFolder)或使用文件选择器或文件夹选择器的其他文件夹。。。或者(根据文档)在某些情况下使用UNC的任何网络文件夹(请参阅)。。或者,如果声明了“可移动存储”功能,则用户可以访问可移动存储设备上的任何文件
public static string NormalizePath(string path)
{
   if (String.IsNullOrEmpty(path) == false)
   {
      // Correct multiple backslashes
      path = Regex.Replace(path, @"\\+", @"\");

      // Correct parent directory tokens with too many points in it
      path = Regex.Replace(path, @"\\\.\.+", @"\..");

      // Split the path into tokens
      List<string> resultingPathTokens = new List<string>();
      var pathTokens = path.Split('\\');

      // Iterate through the tokens to process parent directory tokens
      foreach (var pathToken in pathTokens)
      {
         if (pathToken == "..")
         {
            if (resultingPathTokens.Count > 1)
            {
               resultingPathTokens.RemoveAt(resultingPathTokens.Count - 1);
            }
         }
         else
         {
            resultingPathTokens.Add(pathToken);
         }
      }

      // Get the resulting path
      string resultingPath = String.Join("\\", resultingPathTokens);

      // Check if the path contains only two chars with a colon as the second
      if (resultingPath.Length == 2 && resultingPath[1] == ':')
      {
         // Add a backslash in this case
         resultingPath += "\\";
      }

      return resultingPath;
   }
   return path;
}