我遇到了与 JScript 相同的问题,但前提是我之前创建了文件。
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile(filename);
如果文件已经存在,我可以读取或写入文件。
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Create the file, and obtain a file object for the file.
var filename = "testfile.txt";
//here no create! --> fso.CreateTextFile(filename);
var fileObj = fso.GetFile(filename);
// Open a text stream for output.
var ts = fileObj.OpenAsTextStream(ForWriting, TristateUseDefault);
// Write to the text stream.
ts.WriteLine("Hello World!");
ts.WriteLine("The quick brown fox");
ts.Close();
它有效,但如果您知道所需的文件,这是一种解决方法。否则你会得到 System.Security.SecurityException: HRESULT: 0x800A0046 (CTL_E_PERMISSIONDENIED)。
编辑:: MSDN 说:在上面显示的代码中,CreateObject 函数返回 FileSystemObject (fs)。然后 CreateTextFile 方法将文件创建为 TextStream 对象 (a),WriteLine 方法将一行文本写入创建的文本文件。Close 方法刷新缓冲区并关闭文件。
所以我尝试了这个,它对我有用:
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
// Create the file, and obtain a file object for the file.
var filename = "testfile.txt";
var tss = fso.CreateTextFile(filename);
tss.close();
var fileObj = fso.GetFile(filename);
// Open a text stream for output.
var ts = fileObj.OpenAsTextStream(ForWriting, TristateUseDefault);
// Write to the text stream.
ts.WriteLine("Hello World!");
ts.WriteLine("The quick brown fox");
ts.Close();
创建文件后,您必须先将其关闭,因为 createFileMethod 将文件创建为 TextStream 对象。只要它是作为 TextStream 创建的,它就被锁定在文件系统上。