如何使用WinJS一次保存多个文件?

时间:2016-09-29 18:13:41

标签: javascript windows-store-apps win-universal-app winjs windows-10-universal

我正在为Windows 8和10的Windows应用商店制作WinJS应用程序。我正在为我的公司制作应用程序,并且在用户流程结束时,他们应该点击“导出”按钮。将大约10个文件保存到他们选择的文件夹中。

现在,我知道如何使用Windows.Storage.Pickers.FileSavePicker()保存单个文件,但我不想让用户承担接受10个文件中每个文件的保存的负担 - 我只是想要用户接受他们进入的文件夹,然后将它们全部保存在一起。

这可能在WinJS中吗?

1 个答案:

答案 0 :(得分:2)

  

但我不想让用户承担接受10个文件中每个文件的保存的负担 - 我只是希望用户接受他们要进入的文件夹,然后将它们全部保存在一个文件夹中俯冲。

您可以使用FolderPicker获取目标文件夹,并使用StorageFolder.CreateFileAsync生成10个文件并将所需内容复制到文件中:

var pickers = Windows.Storage.Pickers;
var DataWriter = Windows.Storage.Streams.DataWriter;
...
document.getElementById("btnSave").onclick = function (evt)
{
       var content = "Test Content";
       var picker = new pickers.FolderPicker();
       picker.suggestedStartLocation = pickers.PickerLocationId.computerFolder;
       picker.fileTypeFilter.append(".txt");
       picker.pickSingleFolderAsync().then(function (folder) {
       if (folder != null)
       {
           for (var i = 1; i < 11; i++) {
               folder.createFileAsync("testFile" +i+ ".txt", Windows.Storage.CreationCollisionOption.replaceExisting)
                    .then(function (file) {
                        file.openAsync(Windows.Storage.FileAccessMode.readWrite)
                            .then(function (randomAccessStream) {
                                var dataWriter = new DataWriter(randomAccessStream.getOutputStreamAt(0));
                                dataWriter.writeString(content);
                                        dataWriter.storeAsync().done(function () {
                                            randomAccessStream.close();
                                            dataWriter.close();
                                });
                            }, errorHandler);
                    }, errorHandler);
                }
            }
        }, errorHandler)
}

function errorHandler(error){}