Создать папку относительно выбранного файла в приложении Windows Store
Я борюсь с API-интерфейсом приложений Windows Store. Я хочу создать подпапку во время экспорта данных, чтобы записать в нее дополнительные файлы. Это означает:
data.txt
extra
+ 1.txt
+ 2.txt
Файл data.txt выбирается пользователем, поэтому писать его без проблем. Но как я могу создать эту подпапку?
storageFolder.getFolderAsync("C\some\path\where\data\is\extra").done(...
не работает. Кажется, что из-за ограничений безопасности не удается.
Я мог бы жить с ограничением, чтобы писать в документы. Но это также не работает, когда пользователь выбирает data.txt в папке документов.
2 ответа
Я боюсь, что это поведение "как задумано".
Yoy может делать все, что вы хотите, в папках, специфичных для вашего приложения (AppData). Вы можете читать / редактировать файл в любом месте системы, когда пользователь дает вам авторизацию через активацию файла или средство выбора файлов. Существует API для продления срока действия этой авторизации. Вы можете прочитать / отредактировать файл в известной папке, если в вашем приложении проверены требуемые возможности в его манифесте.
Другие взаимодействия с файловой системой не будут выполнены из-за ограничений безопасности.
Если решено позволить пользователю выбрать каталог вместо файла. FolderPicker справится с этой задачей. Это не мое предпочтительное решение, потому что пользователь теряет возможность выбрать имя целевой папки. Опция создания в FolderPicker, как в Windows без RT, решит эту проблему, но пока нет.
Так что мой пользователь должен создать папку экспорта в Documents by Explorer, а затем выбрать ее в приложении.
Моя структура:
Documents
+ export (created by user in explorer)
++ 2012-10-04 (hard coded by app)
+++ data.txt
+++ extra
++++ 1.txt
++++ 2.txt