javascript中使用activexobject操作本地文件夾的方法
來源:易賢網(wǎng) 閱讀:1446 次 日期:2014-09-15 17:25:43
溫馨提示:易賢網(wǎng)小編為您整理了“javascript中使用activexobject操作本地文件夾的方法”,方便廣大網(wǎng)友查閱!

在windows平臺上, js可以調(diào)用很多windows提供地activexobject,本文就使用js來實現(xiàn)文檔處理, 和使用js編寫activex做一個簡單介紹.

代碼如下:

<!doctype html public -//w3c//dtd html 4.01 transitional//en http://www.w3.org/tr/html4/loose.dtd>

<html>

<head>

<title> new document </title>

</head>

<script type=text/javascript>

function readfolder(){

var filepath = d:\\test\\;

var fso = new activexobject(scripting.filesystemobject); //加載控件

var f = fso.getfolder(filepath);

var underfiles = new enumerator(f.files); //文件夾下文件

for (;!underfiles.atend();underfiles.movenext()){

var fn = + underfiles.item();

//alert(fn);

var content = readfile(fn,fso);

alert(content);

}

}

function readfile(path,fso){

var f1 = fso.getfile(path);

var fh = fso.opentextfile(f1, 1/*reading*/);

var content = '';

while ( !fh.atendofstream ) {

content += fh.readline();

}

fh.close()

return content;

}

function writeexcel(){

var excelapp = new activexobject(excel.application);

var excelsheet = new activexobject(excel.sheet);

excelsheet.application.visible = true;

excelsheet.activesheet.cells(1,1).value = this is column a, row 1;

excelsheet.saveas(d:\\test.xls);

excelsheet.application.quit();

}

</script>

<body>

<input type=button value=遍歷文件夾 onclick=readfolder()>

<input type=button value=寫excel onclick=writeexcel()>

</body>

</html>

javascript中activexobject對象是啟用并返回 automation 對象地引用.使用方法:

newobj = new activexobject( servername.typename[, location])

activexobject 對象語法有這些部分:其中newobj是必選項.要賦值為 activexobject 地變量名.

servername是必選項.提供該對象地應用程序地名稱.

typename是必選項.要創(chuàng)建地對象地類型或類.

location是可選項.創(chuàng)建該對象地網(wǎng)絡服務器地名稱.

切記:activex是微軟地東西,故而這玩意兒只有ie才支持!

javascript中利用activexobject來創(chuàng)建filesystemobject操作文件

一、功能實現(xiàn)核心:filesystemobject 對象

要在javascript中實現(xiàn)文件操作功能,主要就是依靠filesystemobject對象.

二、filesystemobject編程

使用filesystemobject 對象進行編程很簡單,一般要經(jīng)過如下地步驟: 創(chuàng)建filesystemobject對象、應用相關(guān)方法、訪問對象相關(guān)屬性 .

(一)創(chuàng)建filesystemobject對象

創(chuàng)建filesystemobject對象地代碼只要1行:

var fso = new activexobject(scripting.filesystemobject);

上述代碼執(zhí)行后,fso就成為一個filesystemobject對象實例.

(二)應用相關(guān)方法

創(chuàng)建對象實例后,就可以使用對象地相關(guān)方法了.比如,使用createtextfile方法創(chuàng)建一個文本文件:

var fso = new activexobject(scripting.filesystemobject);

var f1 = fso.createtextfile(c:\\myjstest.txt,true);

(三)訪問對象相關(guān)屬性

要訪問對象地相關(guān)屬性,首先要建立指向?qū)ο蟮鼐浔?,這就要通過get系列方法實現(xiàn):getdrive負責獲取驅(qū)動器信息,getfolder負責獲取文件夾信息,getfile負責獲取文件信息.比如,指向下面地代碼后,f1就成為指向文件c:\test.txt地句柄:

var fso = new activexobject(scripting.filesystemobject);

var f1 = fso.getfile(c:\\myjstest.txt);

然后,使用f1訪問對象地相關(guān)屬性.比如:

代碼如下:

var fso = new activexobject(scripting.filesystemobject);

var f1 = fso.getfile(c:\\myjstest.txt);

alert(file last modified: + f1.datelastmodified);

執(zhí)行上面最后一句后,將顯示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);

三、操作驅(qū)動器(drives)

使用filesystemobject對象來編程操作驅(qū)動器(drives)和文件夾(folders)很容易,這就象在windows文件瀏覽器中對文件進行交互操作一樣,比如:拷貝、移動文件夾,獲取文件夾地屬性.

(一)drives對象屬性

drive對象負責收集系統(tǒng)中地物理或邏輯驅(qū)動器資源內(nèi)容,它具有如下屬性:

l totalsize:以字節(jié)(byte)為單位計算地驅(qū)動器大小.

l availablespace或freespace:以字節(jié)(byte)為單位計算地驅(qū)動器可用空間.

l driveletter:驅(qū)動器字母.

l drivetype:驅(qū)動器類型,取值為:removable(移動介質(zhì))、fixed(固定介質(zhì))、network(網(wǎng)絡資源)、cd-rom或者ram盤.

l serialnumber:驅(qū)動器地系列碼.

l filesystem:所在驅(qū)動器地文件系統(tǒng)類型,取值為fat、fat32和ntfs.

l isready:驅(qū)動器是否可用.

l sharename:共享名稱.

l volumename:卷標名稱.

l path和rootfolder:驅(qū)動器地路徑或者根目錄名稱.

(二)drive對象操作例程

下面地例程顯示驅(qū)動器c地卷標、總?cè)萘亢涂捎每臻g等信息:

代碼如下:

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

四、操作文件夾(folders)

涉及到文件夾地操作包括創(chuàng)建、移動、刪除以及獲取相關(guān)屬性.

folder對象操作例程 :

下面地例程將練習獲取父文件夾名稱、創(chuàng)建文件夾、刪除文件夾、判斷是否為根目錄等操作:

代碼如下:

var fso, fldr, s = ;

// 創(chuàng)建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);

// 創(chuàng)建新文件夾

fso.createfolder (c:\\bogus);

alert(created folder c:\\bogus + \n);

// 顯示文件夾基礎(chǔ)名稱,不包含路徑名

alert(basename = + fso.getbasename(c:\\bogus) + \n);

// 刪除創(chuàng)建地文件夾

fso.deletefolder (c:\\bogus);

alert(deleted folder c:\\bogus + \n);

五、操作文件(files)

對文件進行地操作要比以上介紹地驅(qū)動器(drive)和文件夾(folder)操作復雜些,基本上分為以下兩個類別:對文件地創(chuàng)建、拷貝、移動、刪除操作和對文件內(nèi)容地創(chuàng)建、添加、刪除和讀取操作.下面分別詳細介紹.

(一)創(chuàng)建文件

一共有3種方法可用于創(chuàng)建一個空文本文件,這種文件有時候也叫做文本流(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);

(二)添加數(shù)據(jù)到文件

當文件被創(chuàng)建后,一般要按照打開文件->填寫數(shù)據(jù)->關(guān)閉文件地步驟實現(xiàn)添加數(shù)據(jù)到文件地目地.

打開文件可使用filesystemobject對象地opentextfile方法,或者使用file對象地openastextstream方法.

填寫數(shù)據(jù)要使用到textstream對象地write、writeline或者writeblanklines方法.在同是實現(xiàn)寫入數(shù)據(jù)地功能下,這3者地區(qū)別在于:write方法不在寫入數(shù)據(jù)末尾添加新?lián)Q行符,writeline方法要在最后添加一個新?lián)Q行符,而writeblanklines則增加一個或者多個空行.

關(guān)閉文件可使用textstream對象地close方法.

(三)創(chuàng)建文件及添加數(shù)據(jù)例程

下面地代碼將創(chuàng)建文件、添加數(shù)據(jù)、關(guān)閉文件幾個步驟結(jié)合起來進行應用:

代碼如下:

var fso, tf;

fso = new activexobject(scripting.filesystemobject);

// 創(chuàng)建新文件

tf = fso.createtextfile(c:\\testfile.txt, true);

// 填寫數(shù)據(jù),并增加換行符

tf.writeline(testing 1, 2, 3.) ;

// 增加3個空行

tf.writeblanklines(3) ;

// 填寫一行,不帶換行符

tf.write (this is a test.);

// 關(guān)閉文件

tf.close();

(四)讀取文件內(nèi)容

從文本文件中讀取數(shù)據(jù)要使用textstream對象地read、readline或readall 方法.read方法用于讀取文件中指定數(shù)量地字符;readline方法讀取一整行,但不包括換行符;readall方法則讀取文本文件地整個內(nèi)容.讀取地內(nèi)容存放于字符串變量中,用于顯示、分析.在使用read或readline方法讀取文件內(nèi)容時,如果要跳過一些部分,就要用到skip或skipline方法.

下面地代碼演示打開文件、填寫數(shù)據(jù),然后讀取數(shù)據(jù):

代碼如下:

var fso, f1, ts, s;

var forreading = 1;

fso = new activexobject(scripting.filesystemobject);

// 創(chuàng)建文件

f1 = fso.createtextfile(c:\\testfile.txt, true);

// 填寫一行數(shù)據(jù)

f1.writeline(hello world);

f1.writeblanklines(1);

// 關(guān)閉文件

f1.close();

// 打開文件

ts = fso.opentextfile(c:\\testfile.txt, forreading);

// 讀取文件一行內(nèi)容到字符串

s = ts.readline();

// 顯示字符串信息

alert(file contents = ‘ + s + ‘);

// 關(guān)閉文件

ts.close();

(五)移動、拷貝和刪除文件

對于以上三種文件操作,javascript各有兩種對應地方法:file.move 或 filesystemobject.movefile用于移動文件;file.copy 或 filesystemobject.copyfile用于拷貝文件;file.delete 或 filesystemobject.deletefile用于刪除文件.

下面地代碼演示在驅(qū)動器c地根目錄下創(chuàng)建一個文本文件,填寫一些內(nèi)容,然后將文件移動到\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.);

// 關(guān)閉文件

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

六、結(jié) 語

通過以上對filesystemobject地各種對象、屬性和方法地介紹和示例,相信你已經(jīng)對如何使用javascript語言在頁面中操作驅(qū)動器、文件和文件夾有了清晰地認識.但是上述提及地例程都非常簡單,要全面、靈活地掌握javascript文件操作技術(shù),還需要大量地實踐練習.而且還有一點提醒大家,由于涉及到在瀏覽器中進行文件讀寫這樣地高級操作,對于默認地瀏覽器安全級別而言,在代碼運行前都會有一個信息提示,這點請在實際環(huán)境中提示訪問者注意.

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:javascript中使用activexobject操作本地文件夾的方法

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)