【JavaScript】JavaScript中的ActiveXObject對象

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操做文件。網絡

1 功能實現核心:FileSystemObject 對象

要在javascript中實現文件操做功能,主要就是依靠FileSystemobject對象。工具

 

2 FileSystemObject編程

使用FileSystemObject 對象進行編程很簡單,通常要通過以下的步驟:spa

a.建立FileSystemObject對象.net

b.應用相關方法

c.訪問對象相關屬性 。

2.1 建立FileSystemObject對象

    建立FileSystemObject對象的代碼只要1行:

var fso = new ActiveXObject(「Scripting.FileSystemObject」);


    上述代碼執行後,fso就成爲一個FileSystemObject對象實例。

2.2 應用相關方法

    建立對象實例後,就能夠使用對象的相關方法了。好比,使用CreateTextFile方法建立一個文本文件:

var fso = new ActiveXObject(「Scripting.FileSystemObject」);
var f1 = fso.createtextfile(「c:\\myjstest.txt」,true」);

 

2.3 訪問對象相關屬性


    要訪問對象的相關屬性,首先要創建指向對象的句柄,這就要經過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);

 

3 操做驅動器(Drives)


    使用FileSystemObject對象來編程操做驅動器(Drives)和文件夾(Folders)很容易,這就象在Windows文件瀏覽器中對文件進行交互操做同樣,好比:拷貝、移動文件夾,獲取文件夾的屬性。

3.1 Drives對象屬性

    Drive對象負責收集系統中的物理或邏輯驅動器資源內容,它具備以下屬性:
TotalSize:以字節(byte)爲單位計算的驅動器大小。
AvailableSpace或FreeSpace:以字節(byte)爲單位計算的驅動器可用空間。
DriveLetter:驅動器字母。
DriveType:驅動器類型,取值爲:removable(移動介質)、fixed(固定介質)、network(網絡資源)、CD-ROM或者RAM盤。
SerialNumber:驅動器的系列碼。
FileSystem:所在驅動器的文件系統類型,取值爲FAT、FAT32和NTFS。
IsReady:驅動器是否可用。
ShareName:共享名稱。
VolumeName:卷標名稱。
Path和RootFolder:驅動器的路徑或者根目錄名稱。

3.2 Drive對象操做例程


    下面的例程顯示驅動器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);

 

4 操做文件夾(Folders)


    涉及到文件夾的操做包括建立、移動、刪除以及獲取相關屬性。
    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」);

 

5 操做文件(Files)


    對文件進行的操做要比以上介紹的驅動器(Drive)和文件夾(Folder)操做複雜些,基本上分爲如下兩個類別:對文件的建立、拷貝、移動、刪除操做和對文件內容的建立、添加、刪除和讀取操做。下面分別詳細介紹。

5.1 建立文件


一共有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);

 

5.2 添加數據到文件


    當文件被建立後,通常要按照「打開文件->填寫數據->關閉文件」的步驟實現添加數據到文件的目的。
    打開文件可以使用FileSystemObject對象的OpenTextFile方法,或者使用File對象的OpenAsTextStream方法。
    填寫數據要使用到TextStream對象的Write、WriteLine或者WriteBlankLines方法。在同是實現寫入數據的功能下,這3者的區別在於:Write方法不在寫入數據末尾添加新換行符,WriteLine方法要在最後添加一個新換行符,而WriteBlankLines則增長一個或者多個空行。
    關閉文件可以使用TextStream對象的Close方法。

5.3 建立文件及添加數據例程


    下面的代碼將建立文件、添加數據、關閉文件幾個步驟結合起來進行應用:

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();

 

5.4 讀取文件內容


    從文本文件中讀取數據要使用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();

 

5.5 移動、拷貝和刪除文件


    對於以上三種文件操做,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();

 

6 結 語


    經過以上對FileSystemObject的各類對象、屬性和方法的介紹和示例,相信你已經對如何使用javascript語言在頁面中操做驅動器、文件和文件夾有了清晰的認識。可是上述說起的例程都很是簡單,要全面、靈活地掌握javascript文件操做技術,還須要大量的實踐練習。並且還有一點提醒你們,因爲涉及到在瀏覽器中進行文件讀寫這樣的高級操做,對於默認的瀏覽器安全級別而言,在代碼運行前都會有一個信息提示,這點請在實際環境中提示訪問者注意。

 

原文連接:

JavaScript中的ActiveXObject對象

相關文章
相關標籤/搜索