如何使用WinJS同时保存多个文件?

How Can You Save Multiple Files At Once with WinJS?

本文关键字:文件 保存 何使用 WinJS      更新时间:2023-09-26

我正在为Windows 8和Windows 10的Windows Store制作一个WinJS应用程序。我正在为我的公司制作一个应用程序,在用户流程结束时,他们希望单击导出按钮,将大约10个文件保存到他们选择的文件夹中。

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

在WinJS中是可能的吗?

但是我不想给用户负担接受每一个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){}