在TypeScript中,我需要检查新创建的文件是否可写。该文件由createWriteStream()创建,并且在磁盘上尚不存在。
我研究了使用createWriteStream()返回的WriteStream对象的out.writable
属性。在Windows 10上,writable
始终为true,即使文件在磁盘上是只读的。不好。
然后我尝试使用fs.accessSync()。这样可以很好地识别已经存在的只读文件。但是,当createWriteStream()创建新文件时,fs.accessSync()会引发错误。
我正在使用TypeScript将数据附加到文件列表中。如果文件不存在,则应创建一个文件。如果无法写入任何文件,则会对该文件执行后备操作。
import * as fs from 'fs';
const tagFile = '~/new_file_name.txt';
const out:fs.WriteStream = fs.createWriteStream(tagFile, {flags:'a'});
const markFileBad = (err: string) => {
// fallback action
console.error(err);
out.end();
};
out.on('open', (f) => {
try {
fs.accessSync(tagFile, fs.constants.W_OK);
out.write('\n===\n');
} catch (err) {
markFileBad("Cannot write to " + tagFile);
}
});
out.on('error', markFileBad);