JavaScript中ActiveXObject對象是啓用並返回 Automation 對象的引用。
使用方法:javascript
newObj = new ActiveXObject( servername.typename[, location])
ActiveXObject 對象語法有這些部分:其中newObj是必選項。要賦值爲 ActiveXObject 的變量名。java
servername是必選項。提供該對象的應用程序的名稱。編程
typename是必選項。要建立的對象的類型或類。瀏覽器
location是可選項。建立該對象的網絡服務器的名稱。安全
切記:ActiveX是微軟的東西,故而這玩意兒只有IE才支持!服務器
==打開Internet Explorer 「工具」菜單欄中的「選項」一欄,單擊「安全」欄中的「自定義級別」選項卡,將第三項「對沒有標記爲安全的activex控件進行初始化和腳本運行」設置成「啓用」便可。==
在javaScript中利用ActiveXObject來建立FileSystemObject操做文件。網絡
要在javascript中實現文件操做功能,主要就是依靠FileSystemobject對象。工具
使用FileSystemObject 對象進行編程很簡單,通常要通過以下的步驟:spa
a.建立FileSystemObject對象.net
b.應用相關方法
c.訪問對象相關屬性 。
建立FileSystemObject對象的代碼只要1行:
var fso = new ActiveXObject(「Scripting.FileSystemObject」);
上述代碼執行後,fso就成爲一個FileSystemObject對象實例。
建立對象實例後,就能夠使用對象的相關方法了。好比,使用CreateTextFile方法建立一個文本文件:
var fso = new ActiveXObject(「Scripting.FileSystemObject」); var f1 = fso.createtextfile(「c:\\myjstest.txt」,true」);
要訪問對象的相關屬性,首先要創建指向對象的句柄,這就要經過get系列方法實現:GetDrive負責獲取驅動器信息,GetFolder負責獲取文件夾信息,GetFile負責獲取文件信息。好比,指向下面的代碼後,f1就成爲指向文件c:\test.txt的句柄:
var fso = new ActiveXObject(「Scripting.FileSystemObject」); var f1 = fso.GetFile(「c:\\myjstest.txt」);
而後,使用f1訪問對象的相關屬性。好比:
var fso = new ActiveXObject(「Scripting.FileSystemObject」); var f1 = fso.GetFile(「c:\\myjstest.txt」); alert(「File last modified: 」 + f1.DateLastModified);
執行上面最後一句後,將顯示c:\myjstest.txt的最後修改日期屬性值。
但有一點請注意:對於使用create方法創建的對象,就沒必要再使用get方法獲取對象句柄了,這時直接使用create方法創建的句柄名稱就能夠:
var fso = new ActiveXObject(「Scripting.FileSystemObject」); var f1 = fso.createtextfile(「c:\\myjstest.txt」,true」); alert(「File last modified: 」 + f1.DateLastModified);
使用FileSystemObject對象來編程操做驅動器(Drives)和文件夾(Folders)很容易,這就象在Windows文件瀏覽器中對文件進行交互操做同樣,好比:拷貝、移動文件夾,獲取文件夾的屬性。
Drive對象負責收集系統中的物理或邏輯驅動器資源內容,它具備以下屬性:
TotalSize:以字節(byte)爲單位計算的驅動器大小。
AvailableSpace或FreeSpace:以字節(byte)爲單位計算的驅動器可用空間。
DriveLetter:驅動器字母。
DriveType:驅動器類型,取值爲:removable(移動介質)、fixed(固定介質)、network(網絡資源)、CD-ROM或者RAM盤。
SerialNumber:驅動器的系列碼。
FileSystem:所在驅動器的文件系統類型,取值爲FAT、FAT32和NTFS。
IsReady:驅動器是否可用。
ShareName:共享名稱。
VolumeName:卷標名稱。
Path和RootFolder:驅動器的路徑或者根目錄名稱。
下面的例程顯示驅動器C的卷標、總容量和可用空間等信息:
var fso, drv, s =」"; fso = new ActiveXObject(「Scripting.FileSystemObject」); drv = fso.GetDrive(fso.GetDriveName(「c:\\」)); s += 「Drive C:」 + 」 – 「; s += drv.VolumeName + 「\n」; s += 「Total Space: 」 + drv.TotalSize / 1024; s += 」 Kb」 + 「\n」; s += 「Free Space: 」 + drv.FreeSpace / 1024; s += 」 Kb」 + 「\n」; alert(s);
涉及到文件夾的操做包括建立、移動、刪除以及獲取相關屬性。
Folder對象操做例程 :
下面的例程將練習獲取父文件夾名稱、建立文件夾、刪除文件夾、判斷是否爲根目錄等操做:
var fso, fldr, s = 「」; // 建立FileSystemObject對象實例 fso = new ActiveXObject(「Scripting.FileSystemObject」); // 獲取Drive 對象 fldr = fso.GetFolder(「c:\\」); // 顯示父目錄名稱 alert(「Parent folder name is: 」 + fldr + 「\n」); // 顯示所在drive名稱 alert(「Contained on drive 」 + fldr.Drive + 「\n」); // 判斷是否爲根目錄 if (fldr.IsRootFolder) alert(「This is the root folder.」); else alert(「This folder isn’t a root folder.」); alert(「\n\n」); // 建立新文件夾 fso.CreateFolder (「C:\\Bogus」); alert(「Created folder C:\\Bogus」 + 「\n」); // 顯示文件夾基礎名稱,不包含路徑名 alert(「Basename = 」 + fso.GetBaseName(「c:\\bogus」) + 「\n」); // 刪除建立的文件夾 fso.DeleteFolder (「C:\\Bogus」); alert(「Deleted folder C:\\Bogus」 + 「\n」);
對文件進行的操做要比以上介紹的驅動器(Drive)和文件夾(Folder)操做複雜些,基本上分爲如下兩個類別:對文件的建立、拷貝、移動、刪除操做和對文件內容的建立、添加、刪除和讀取操做。下面分別詳細介紹。
一共有3種方法可用於建立一個空文本文件,這種文件有時候也叫作文本流(text stream)。
第一種是使用CreateTextFile方法。代碼以下:
var fso, f1; fso = new ActiveXObject(「Scripting.FileSystemObject」); f1 = fso.CreateTextFile(「c:\\testfile.txt」, true);
第二種是使用OpenTextFile方法,並添加上ForWriting屬性,ForWriting的值爲2。代碼以下:
var fso, ts; var ForWriting= 2; fso = new ActiveXObject(「Scripting.FileSystemObject」); ts = fso.OpenTextFile(「c:\\test.txt」, ForWriting, true);
第三種是使用OpenAsTextStream方法,一樣要設置好ForWriting屬性。代碼以下:
var fso, f1, ts; var ForWriting = 2; fso = new ActiveXObject(「Scripting.FileSystemObject」); fso.CreateTextFile (「c:\\test1.txt」); f1 = fso.GetFile(「c:\\test1.txt」); ts = f1.OpenAsTextStream(ForWriting, true);
當文件被建立後,通常要按照「打開文件->填寫數據->關閉文件」的步驟實現添加數據到文件的目的。
打開文件可以使用FileSystemObject對象的OpenTextFile方法,或者使用File對象的OpenAsTextStream方法。
填寫數據要使用到TextStream對象的Write、WriteLine或者WriteBlankLines方法。在同是實現寫入數據的功能下,這3者的區別在於:Write方法不在寫入數據末尾添加新換行符,WriteLine方法要在最後添加一個新換行符,而WriteBlankLines則增長一個或者多個空行。
關閉文件可以使用TextStream對象的Close方法。
下面的代碼將建立文件、添加數據、關閉文件幾個步驟結合起來進行應用:
var fso, tf; fso = new ActiveXObject(「Scripting.FileSystemObject」); // 建立新文件 tf = fso.CreateTextFile(「c:\\testfile.txt」, true); // 填寫數據,並增長換行符 tf.WriteLine(「Testing 1, 2, 3.」) ; // 增長3個空行 tf.WriteBlankLines(3) ; // 填寫一行,不帶換行符 tf.Write (「This is a test.」); // 關閉文件 tf.Close();
從文本文件中讀取數據要使用TextStream對象的Read、ReadLine或ReadAll 方法。Read方法用於讀取文件中指定數量的字符;ReadLine方法讀取一整行,但不包括換行符;ReadAll方法則讀取文本文件的整個內容。讀取的內容存放於字符串變量中,用於顯示、分析。在使用Read或ReadLine方法讀取文件內容時,若是要跳過一些部分,就要用到Skip或SkipLine方法。
下面的代碼演示打開文件、填寫數據,而後讀取數據:
var fso, f1, ts, s; var ForReading = 1; fso = new ActiveXObject(「Scripting.FileSystemObject」); // 建立文件 f1 = fso.CreateTextFile(「c:\\testfile.txt」, true); // 填寫一行數據 f1.WriteLine(「Hello World」); f1.WriteBlankLines(1); // 關閉文件 f1.Close(); // 打開文件 ts = fso.OpenTextFile(「c:\\testfile.txt」, ForReading); // 讀取文件一行內容到字符串 s = ts.ReadLine(); // 顯示字符串信息 alert(「File contents = ‘」 + s + 「‘」); // 關閉文件 ts.Close();
對於以上三種文件操做,javascript各有兩種對應的方法:File.Move 或 FileSystemObject.MoveFile用於移動文件;File.Copy 或 FileSystemObject.CopyFile用於拷貝文件;File.Delete 或 FileSystemObject.DeleteFile用於刪除文件。
下面的代碼演示在驅動器C的根目錄下建立一個文本文件,填寫一些內容,而後將文件移動到\tmp目錄下,再在目錄\temp下面創建一個文件拷貝,最後刪除這兩個目錄的文件:
var fso, f1, f2, s; fso = new ActiveXObject(「Scripting.FileSystemObject」); f1 = fso.CreateTextFile(「c:\\testfile.txt」, true); // 寫一行 f1.Write(「This is a test.」); // 關閉文件 f1.Close(); // 獲取C:\根目錄下的文件句柄 f2 = fso.GetFile(「c:\\testfile.txt」); // 移動文件到\tmp目錄下 f2.Move (「c:\\tmp\\testfile.txt」); // 拷貝文件到\temp目錄下 f2.Copy (「c:\\temp\\testfile.txt」); // 獲取文件句柄 f2 = fso.GetFile(「c:\\tmp\\testfile.txt」); f3 = fso.GetFile(「c:\\temp\\testfile.txt」); // 刪除文件 f2.Delete(); f3.Delete();
經過以上對FileSystemObject的各類對象、屬性和方法的介紹和示例,相信你已經對如何使用javascript語言在頁面中操做驅動器、文件和文件夾有了清晰的認識。可是上述說起的例程都很是簡單,要全面、靈活地掌握javascript文件操做技術,還須要大量的實踐練習。並且還有一點提醒你們,因爲涉及到在瀏覽器中進行文件讀寫這樣的高級操做,對於默認的瀏覽器安全級別而言,在代碼運行前都會有一個信息提示,這點請在實際環境中提示訪問者注意。
原文連接: