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

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

代碼如下:

<!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對(duì)象是啟用并返回 automation 對(duì)象地引用.使用方法:

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

activexobject 對(duì)象語(yǔ)法有這些部分:其中newobj是必選項(xiàng).要賦值為 activexobject 地變量名.

servername是必選項(xiàng).提供該對(duì)象地應(yīng)用程序地名稱.

typename是必選項(xiàng).要?jiǎng)?chuàng)建地對(duì)象地類型或類.

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

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

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

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

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

二、filesystemobject編程

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

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

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

var fso = new activexobject(scripting.filesystemobject);

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

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

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

var fso = new activexobject(scripting.filesystemobject);

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

(三)訪問(wèn)對(duì)象相關(guān)屬性

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

var fso = new activexobject(scripting.filesystemobject);

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

然后,使用f1訪問(wèn)對(duì)象地相關(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地最后修改日期屬性值.

但有一點(diǎn)請(qǐng)注意:對(duì)于使用create方法建立地對(duì)象,就不必再使用get方法獲取對(duì)象句柄了,這時(shí)直接使用create方法建立地句柄名稱就可以:

代碼如下:

var fso = new activexobject(scripting.filesystemobject);

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

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

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

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

(一)drives對(duì)象屬性

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

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

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

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

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

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

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

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

l sharename:共享名稱.

l volumename:卷標(biāo)名稱.

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

(二)drive對(duì)象操作例程

下面地例程顯示驅(qū)動(dòng)器c地卷標(biāo)、總?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)建、移動(dòng)、刪除以及獲取相關(guān)屬性.

folder對(duì)象操作例程 :

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

代碼如下:

var fso, fldr, s = ;

// 創(chuàng)建filesystemobject對(duì)象實(shí)例

fso = new activexobject(scripting.filesystemobject);

// 獲取drive 對(duì)象

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)

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

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

一共有3種方法可用于創(chuàng)建一個(gè)空文本文件,這種文件有時(shí)候也叫做文本流(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方法,同樣要設(shè)置好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ù)到文件

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

打開(kāi)文件可使用filesystemobject對(duì)象地opentextfile方法,或者使用file對(duì)象地openastextstream方法.

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

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

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

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

代碼如下:

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個(gè)空行

tf.writeblanklines(3) ;

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

tf.write (this is a test.);

// 關(guān)閉文件

tf.close();

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

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

下面地代碼演示打開(kāi)文件、填寫數(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();

// 打開(kāi)文件

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

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

s = ts.readline();

// 顯示字符串信息

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

// 關(guān)閉文件

ts.close();

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

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

下面地代碼演示在驅(qū)動(dòng)器c地根目錄下創(chuàng)建一個(gè)文本文件,填寫一些內(nèi)容,然后將文件移動(dòng)到\tmp目錄下,再在目錄\temp下面建立一個(gè)文件拷貝,最后刪除這兩個(gè)目錄地文件:

代碼如下:

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

// 移動(dòng)文件到\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é) 語(yǔ)

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

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

更多信息請(qǐng)查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:javascript中使用activexobject操作本地文件夾的方法
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)