UWP — получить путь к папке загрузки пользователя

#c# #uwp #windows-10-universal

#c# #uwp #windows-10-универсальный

Вопрос:

Я уже некоторое время ищу и не нахожу большой помощи через ресурсы MSDN и другие.

Мое затруднительное положение простое: моему приложению нужен базовый каталог для папки Downloads. Однако я знаю о DownloadsFolder классе, который в настоящее время не соответствует моим потребностям.

Как мне получить путь к папке загрузки текущего пользователя в универсальном приложении Windows?

Комментарии:

1. DownloadsFolder is not suiting my needs итак, что именно вы ищете?

Ответ №1:

Используется Windows.Storage.UserDataPaths для получения пути к папке загрузки пользователя.

 string downloadsPath = UserDataPaths.GetDefault().Downloads;
  
  • Этот метод представлен в сборке 16232, поэтому клиенты с RS3 (1709) или более поздней версии смогут его запустить.
  • Вы не должны получать путь к папке загрузки с помощью LocalFolder, что может привести к неправильной папке, когда пользователь изменил для нее местоположение по умолчанию.

Комментарии:

1. Это более надежный ответ!

Ответ №2:

 System.Environment.ExpandEnvironmentVariables("%userprofile%/downloads/")
  

Ответ №3:

Это то, что вам нужно?

 string localfolder = ApplicationData.Current.LocalFolder.Path;
var array = localfolder.Split('\');
var username = array[2];
string downloads = @"C:Users"   username   @"Downloads";
  

Это приведет

C:UsersusernameDownloads

Комментарии:

1. Я полагал, что это решение, но не был уверен, не просматривал ли я фреймворк или класс в NETCore, которые уже будут предоставлены. Спасибо!

2. Это статическое решение с плохой практикой. Это зависит от того, что файловая система не меняется, это более элегантно: UserDataPaths . getDefault(). Загрузки

Ответ №4:

DownloadsFolder Для приложения теперь по умолчанию используется папка, содержащая каталог загрузок пользователя, названный в честь имени приложения (на самом деле папка с именем приложения — это просто ссылка на папку, названную в честь Package Family Name ) Чтобы получить имя папки, я использовал следующий хак (vb), чтобы сначала создать фиктивный файл взатем используется папка DownloadsFolder приложения UWP.ЧИСТЫЙ код для получения имени каталога и, наконец, удаления фиктивного файла.

 Dim o As StorageFile = Await DownloadsFolder.CreateFileAsync("dummy.txt", CreationCollisionOption.GenerateUniqueName)
Dim dirName Ss String = Path.GetDirectoryName(o.Path)
Await o.DeleteAsync(StorageDeleteOption.PermanentDelete)