Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 12.07.2017, 18:10   #1
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
Репутация: 10
По умолчанию [UWP] Доступ к операциям с папками

При попытке присвоить переменной типа StorageFolder адрес папки на другом диске выбивает с ошибкой "Не удается получить доступ к указанному файлу или папке"

Код:

StorageFolder newfolder = await StorageFolder.GetFolderFromPathAsync(ExportBox.Text);

похожая ошибка возникает если я пытаюсь создать папку в пределах корневого каталога приложения

Код:

private async void EndAndAccept(object sender, RoutedEventArgs e)
{
   StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync(GlobalFuncs.GetLocalFolder());
   await folder.CreateFolderAsync(FolderBox.Text);
}

функция GetLocalFolder() возвращает строку полного пути до папки вложенную в корневой каталог.

Основная моя цель создавать папки с нужным именем внутри корневого каталога и экспортировать содержимое этих папок в любое указанное место на любом диске.
Mukudori вне форума   Ответить с цитированием
Старый 12.07.2017, 20:31   #2
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,350
Репутация: 3515
По умолчанию

Цитата:
Сообщение от Mukudori Посмотреть сообщение
функция GetLocalFolder() возвращает строку полного пути до папки вложенную в корневой каталог.
должна возвращать путь внутри корневого каталога.
Если в корне с программой есть папка "Новая папка", то должно быть:
Код:

StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Новая папка");

Если нужна вложенная дальше папка, то:
Код:

StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Новая папка\\Вложенная папка");

__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 12.07.2017, 20:36   #3
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
должна возвращать путь внутри корневого каталога.
Если в корне с программой есть папка "Новая папка", то должно быть:
Код:

StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Новая папка");

Если нужна вложенная дальше папка, то:
Код:

StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Новая папка\\Вложенная папка");

Полный путь тоже можно вставлять, это не имеет значения. Я уже работал с папкой таким образом и вызывал список файлов. Ошибка возникает в следующей строчке, когда я создаю папку.
Mukudori вне форума   Ответить с цитированием
Старый 12.07.2017, 21:15   #4
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,350
Репутация: 3515
По умолчанию

Туплю. Package.Current.InstalledLocation только для чтения. Писать можно сюда: ApplicationData.Current.LocalFolder (это папка в профиле пользователя AppData\Local\)
или чего там у ApplicationData.Current больше для задачи подойдёт.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 13.07.2017, 18:24   #5
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Туплю. Package.Current.InstalledLocation только для чтения. Писать можно сюда: ApplicationData.Current.LocalFolder (это папка в профиле пользователя AppData\Local\)
или чего там у ApplicationData.Current больше для задачи подойдёт.
А как это оформить?

вот так нельзя:

Код:

StorageFolder NewFolder = await ApplicationData.Current.LocalFolder(GlobalFuncs.GetLocalFolder(true));

И как поступить с копированием файлов в постороннюю папку, не относящуюся к корневому каталогу приложения?
Mukudori вне форума   Ответить с цитированием
Старый 13.07.2017, 23:24   #6
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,350
Репутация: 3515
По умолчанию

Цитата:
Сообщение от Mukudori Посмотреть сообщение
А как это оформить?

вот так нельзя:

Код:

StorageFolder NewFolder = await ApplicationData.Current.LocalFolder(GlobalFuncs.GetLocalFolder(true));

Ну, как-то так можно создавать папки:
Код:

var f = await ApplicationData.Current.LocalFolder.CreateFolderAsync("folder");
await f.CreateFolderAsync("subfolder");
await f.CreateFolderAsync("subfolder\\subsubfolder");

Цитата:
И как поступить с копированием файлов в постороннюю папку, не относящуюся к корневому каталогу приложения?
Нужно чтобы пользователь выбрал папку, в которую будет копироваться что-то:
https://msdn.microsoft.com/ru-ru/lib...code-snippet-2
picker даст права программе на работу в выбранной папке. Права эти можно кэшировать через Windows.Storage.AccessCache.Storage ApplicationPermissions.FutureAccess List
чтобы на каждый чих не заставлять пользователя одну и ту же папку выбирать.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 14.07.2017, 12:56   #7
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Ну, как-то так можно создавать папки:
Код:

var f = await ApplicationData.Current.LocalFolder.CreateFolderAsync("folder");
await f.CreateFolderAsync("subfolder");
await f.CreateFolderAsync("subfolder\\subsubfolder");

когда я пытаюсь сделать так:

Код:

var f = await ApplicationData.Current.LocalFolder.GetFolderAsync("Migrations\\ImageGalery");
                    await f.CreateFolderAsync("papka");

то операция проходит, но в папке с проектом я не нахожу ее

"Migrations\\ImageGalery" у меня находится в "Debug\\AppX\\"
Mukudori вне форума   Ответить с цитированием
Старый 14.07.2017, 16:49   #8
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,350
Репутация: 3515
По умолчанию

Она и не будет в папке с проектом. Она будет в папке Local программы. в AppData.
Посмотрите адрес ApplicationData.Current.LocalFolder , там и ищите папки свои.
в UWP своя замороченная схема работы с файлами. Типа всё безопасно и никому ничего нельзя. Каждая программа в своей "песочнице" и в чужие файлы не лезет.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Старый 15.07.2017, 12:04   #9
Mukudori
Пользователь
 
Регистрация: 05.07.2017
Сообщений: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Она и не будет в папке с проектом. Она будет в папке Local программы. в AppData.
Посмотрите адрес ApplicationData.Current.LocalFolder , там и ищите папки свои.
в UWP своя замороченная схема работы с файлами. Типа всё безопасно и никому ничего нельзя. Каждая программа в своей "песочнице" и в чужие файлы не лезет.
Да я уже понял на какой гемор себя обрек когда начал работать с этой платформой и что все действия мне нужно совершать спросив разрешения у "большого брата", который постоянно следит за мной и держит все под полным контролем. Но раз взялся, то дороги назад уже нет.

А где этот localFolder находится?
Mukudori вне форума   Ответить с цитированием
Старый 15.07.2017, 12:35   #10
pu4koff
Профессионал
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,350
Репутация: 3515
По умолчанию

Где-то тут:
C:\Users\<Имя пользователя>\AppData\Local\Package s\<идентификатор приложения>\LocalState
в зависимости от настроек системы путь может отличаться.
__________________
http://coub.com/view/2hhtg
pu4koff вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[UWP] Пересоздание базы данных SQLite Mukudori WPF, UWP, WinRT, XAML 1 10.07.2017 12:39
Перевести C++ библиотеки в UWP C# Yury8888 WPF, UWP, WinRT, XAML 0 09.06.2017 18:39
UWP приложение можно запустить в виндувс 7? spruced Windows 3 05.03.2017 19:29
Прошу примеры Delphi asm по битовым операциям Turbine Assembler 3 21.09.2016 12:46
Нужен учитель. UWP. 102 WPF, UWP, WinRT, XAML 22 03.06.2016 10:22




15:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru