Лучший отвечающий
Средства работы с файлами на JavaScript

Вопрос
-
Делаю приложение (пятнашки) на JS под Windows 8. Для реализации сохранений понадобилась возможность создавать/удалять файлы без участия пользователя. Так же необходимо определять количество файлов в папке. Прошу подсказать, как это сделать, так как я плохо знаю английский, и непереведённые материалы на сайте microsoft мне не помогут.
- Перемещено Yubo. Zhang 14 сентября 2012 г. 8:46 (От:Приложения Windows в стиле Metro)
8 июня 2012 г. 6:47
Ответы
-
Вот пример, как извлечь все файлы из папки картинок:
// Получаем папку "Мои рисунки" var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; // Получаем содержимое папки picturesLibrary.getItemsAsync().then(function (items) { // Для примера показываем имена папок и количество элементов в них outputHeader(picturesLibrary.name, items.size); // Показываем информацию о дочерних элементах items.forEach(function (item) { if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { output(id(picturesLibrary.name), item.name + "\\"); } else { output(id(picturesLibrary.name), item.fileName); } }); });
Вот так создается файл:
Windows.Storage.KnownFolders.documentsLibrary.createFileAsync("sample.txt", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file) { sampleFile = file; });
Для удаления, что то с ходу примера не нашел, видимо придется заменить createFileAsync, на deleteFileAsync...
- Изменено Алексей ЛосевEditor 8 июня 2012 г. 7:13
- Помечено в качестве ответа Никита Константинович 8 июня 2012 г. 10:36
8 июня 2012 г. 7:13Отвечающий
Все ответы
-
Вот пример, как извлечь все файлы из папки картинок:
// Получаем папку "Мои рисунки" var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; // Получаем содержимое папки picturesLibrary.getItemsAsync().then(function (items) { // Для примера показываем имена папок и количество элементов в них outputHeader(picturesLibrary.name, items.size); // Показываем информацию о дочерних элементах items.forEach(function (item) { if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { output(id(picturesLibrary.name), item.name + "\\"); } else { output(id(picturesLibrary.name), item.fileName); } }); });
Вот так создается файл:
Windows.Storage.KnownFolders.documentsLibrary.createFileAsync("sample.txt", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file) { sampleFile = file; });
Для удаления, что то с ходу примера не нашел, видимо придется заменить createFileAsync, на deleteFileAsync...
- Изменено Алексей ЛосевEditor 8 июня 2012 г. 7:13
- Помечено в качестве ответа Никита Константинович 8 июня 2012 г. 10:36
8 июня 2012 г. 7:13Отвечающий -
Во-первых, что это за функции outputHeader и output. Во-вторых, что за странная конструкция id(picturesLibrary.name)? Но не важно, то, что мне надо, я понял. Только... Для чего нужен второй аргумент функции createFileAsync, и что он делает?
Ещё вопрос. Если мне надо использовать не системные папки, а, скажем, папку html в моём проекте, как её получить?
- Изменено Никита Константинович 8 июня 2012 г. 8:05
8 июня 2012 г. 8:03 -
Второй параметр на тему, что делать если файл уже существует (в данном случае заменять).
Доступ к папкам отличных от системных (ну кроме сменных носителей и расположенных в облаке) закрыт.
8 июня 2012 г. 9:53Отвечающий -
Ясно. И ещё вопрос, правда не по теме. Как передать значение некоторых переменных с одной страницы на другую (я перехожу между ними с помощью window.location.assign())?8 июня 2012 г. 10:44
-
Э... Видите ли... Я не программирую на javaScript... Я взял примеры с MSDN и перевел для вас. Создайте новый вопрос, а то в этот топик уже заходить не будут, он ведь отвечен. И на новый топик из своего вопроса в этом топике поставьте ссылку. Как то так.
8 июня 2012 г. 11:01Отвечающий -
Ясно. Большое спасибо за переводы, без них ломал бы себе мозг гугл-переводами ещё пару дней.8 июня 2012 г. 11:37
-
Алексей вам правильно дал совет, если вопрос не связан с тем, что вы задали в самом начале, то лучше создать новый топик. А переменный видимо в сессии передавать нужно, как это делается в обычном веб-приложении, но у меня пока тоже опыта в приложениях в стиле Metro мало и возможно я ошибаюсь.
Для связи [mail]
9 июня 2012 г. 7:52 -
Насчёт вопроса, уже нашёл другое решение. Кстати, для людей, столкнувшихся с такой же проблемой, скажу, что для нужд приложения можно использовать папку Windows.Storage.ApplicationData.current.localFolder.9 июня 2012 г. 15:36