无法从Web Worker读取/写入文件

问题描述

我正在尝试读取已在本地计算机中创建的文本文件(log.txt),并希望使用文件系统api方法将文本从webworker附加到同一文件中,但无法这样做,并且也无法即使尝试使用react app有线应用程序通过postMessage()方法错误发送到主线程,也会获取任何错误日志

// worker.js

*/* eslint no-restricted-globals: 0 */
        // eslint-disable-next-line no-restricted-globals
        self.requestFileSystemSync = self.webkitRequestFileSystemSync || self.requestFileSystemSync;
        // eslint-disable-next-line no-restricted-globals
        self.BlobBuilder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder;
        try {
                var fs = self.requestFileSystemSync(self.TEMPORARY,1024 * 1024,onFs,onError);
        } catch (e) {
                onError(e);
        }
        function onFs(fs) {
            fs.root.getFile('/Downloads/log.txt',{},function(fileEntry) {
            // Obtain the File object representing the FileEntry.
            // Use FileReader to read its contents.
            fileEntry.file(function(file) {
            var reader = new FileReader();
                postMessage("file reading process",file);
                reader.onloadend = function(e) {
                postMessage("file reading process result",this.result);
                };
                reader.readAsText(file); // Read the file as plaintext.
            },onError);
            },onError);
        }
        //append data to file
            function append(fs,filePath,blob) {
                postMessage("inside append functuin fs ",fs,blob);
                postMessage("inside append functuin filePath ",filePath);
                postMessage("inside append functuin blob ",blob);
                fs.root.getFile(filePath,{create: false},function(fileEntry) {
                // Create a FileWriter object for our FileEntry.
                fileEntry.createWriter(function(fileWriter) {
                    fileWriter.seek(fileWriter.length); // Start write position at EOF.
                    fileWriter.write(bb.getBlob('text/plain'));
                },onError);
        }
        var bb;
        function onFs(fs) {
            postMessage("onFs function");
            bb = new Blob();
            postMessage("bb ",bb);
            bb.append("helloo world" + '\n');
            postMessage("bb after append",bb);
            append(fs,'log.txt',bb.getBlob('text/plain'));
            postMessage("file writing",bb);
        }
        function onError(e) {
            postMessage('ERROR: ' + e.toString());
        }*

解决方法

这正在使用archaic API。标签的使用表明您实际上打算使用现代的File System Access API。我建议您尝试使用新的API。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...