问题描述
我正在尝试读取已在本地计算机中创建的文本文件(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。