我得到了與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,它就會鎖定在文件系統上。
vbscript or vb.net? – Jodrell 2012-07-17 14:30:37
如果這是VB.Net,請使用System.IO命名空間而不是舊的FileSystemObject。 http://msdn.microsoft.com/en-us/library/system.io.file.createtext.aspx – Jodrell 2012-07-17 14:39:11
@Jodrell我已經宣佈命名空間,這是第一次它突然來了,甚至在沒有改變任何事情我可以創建文件也在哪些情況下,它會拋出錯誤,我該如何解決它? – user1494292 2012-07-17 14:47:29