當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
整理javascript操作文件说明.
生活随笔
收集整理的這篇文章主要介紹了
整理javascript操作文件说明.
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
| Javascript是網(wǎng)頁(yè)制作中離不開(kāi)的腳本語(yǔ)言,依靠它,一個(gè)網(wǎng)頁(yè)的內(nèi)容才生動(dòng)活潑、富有朝氣。但也許你還沒(méi)有發(fā)現(xiàn)并應(yīng)用它的一些更高級(jí)的功能吧?比如,對(duì)文件和文件夾進(jìn)行讀、寫和刪除,就象在VB、VC等高級(jí)語(yǔ)言中經(jīng)常做的工作一樣。怎么樣,你是否需要了解這方面的知識(shí)?那就請(qǐng)跟我來(lái),本文將詳細(xì)描述如何使用Javascript語(yǔ)言進(jìn)行文件操作。 |
| 一、功能實(shí)現(xiàn)核心:FileSystemObject 對(duì)象 |
| 其實(shí),要在Javascript中實(shí)現(xiàn)文件操作功能,主要就是依靠FileSystemobject對(duì)象。在詳細(xì)介紹FileSystemobject對(duì)象的各個(gè)屬性和方法的使用細(xì)節(jié)前,先來(lái)看看這個(gè)對(duì)象包括哪些相關(guān)對(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ū)ο蟮木浔?#xff0c;這就要通過(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); |
| 執(zhí)行后出現(xiàn)下面的信息框: |
| 四、操作文件夾(Folders) |
| 涉及到文件夾的操作包括創(chuàng)建、移動(dòng)、刪除以及獲取相關(guān)屬性。 |
| (一) Folder對(duì)象的相關(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)單,要全面、靈活地掌握J(rèn)avaScript文件操作技術(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)者注意。 |
一、功能實(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ū)ο蟮木浔?#xff0c;這就要通過(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)容存放于字符串變量中,用于顯示、分析。
Web設(shè)計(jì)中如何使用XML數(shù)據(jù)源對(duì)象
XML數(shù)據(jù)源對(duì)象是一個(gè)ActiveX控件,允許你在XML文件和HTML頁(yè)面之間操作數(shù)據(jù)。本文將向你展示如何從各種XML數(shù)據(jù)源中提取數(shù)據(jù),以及如何使用JavaScript顯示這些數(shù)據(jù)。
XML數(shù)據(jù)源對(duì)象DSO是一個(gè)微軟ActiveX控件,構(gòu)建在微軟IE4以后的版本上。這個(gè)對(duì)象允許你把一個(gè)外部的XML文件或者嵌入HTML文件中的內(nèi)容提取到HTML頁(yè)面中。
你可以在一個(gè)Web頁(yè)面中使用XML - DSO從一個(gè)外部XML文件中選取內(nèi)容,從嵌入Web頁(yè)面的XML中提取XML數(shù)據(jù),然后使用JavaScript操作這些數(shù)據(jù)。然而,并不建議在Internet中使用這個(gè)對(duì)象,因?yàn)镈SO只能工作在MSIE 4以上的瀏覽器中,因此這可能會(huì)帶來(lái)一些兼容性問(wèn)題。 所以,在企業(yè)內(nèi)部網(wǎng)使用XML-DSO是很合適的。
開(kāi)始
為了初始化XML - DSO對(duì)象,我們使用<OBJECT>標(biāo)記。 用于XML-DSO的CLASSID是:
CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39
這ID唯一標(biāo)識(shí)XML-DSO。使用下面的代碼在一個(gè)Web頁(yè)面中初始化這個(gè)控件:
<OBJECT ID="SomeID" CLASSID="CLSID:550dda30-0541-11d2-9ca9-0060b0ec3d39"></OBJECT>
雖然大部分對(duì)象需要許多參數(shù)與之相關(guān)聯(lián),但是XML-DSO不需要任何參數(shù)。
使用一個(gè)XML數(shù)據(jù)島析取數(shù)據(jù)
首先,通過(guò)使用<XML>標(biāo)記包含一個(gè)XML數(shù)據(jù)島。其次,給它分配一個(gè)ID,xmldb --以備以后使用。 數(shù)據(jù)實(shí)際上是使用HTML標(biāo)記:<ALT>,<SPAN>,<DIV>等等提取的。代碼列表1中的代碼使用了<SPAN>標(biāo)記。datasrc屬性指定了你想從中提取數(shù)據(jù)的那個(gè)數(shù)據(jù)島。datafld屬性指定了你想要的數(shù)據(jù)的XML標(biāo)記。所以,第一個(gè)<SPAN>提取名稱,而第二<SPAN>提取性別。
代碼列表1:
| <!-- example1.htm --> <html> <head> <title>XML DSO-example1.htm</title> </head> <body bgcolor="#FFFFFF"> <xml id="xmldb"> <db> <member> <name>Premshree Pillai<name> <sex>male</sex> </member> <member> <name>Vinod</name> <sex>male</sex> </member> </db> </xml> <span datasrc="#xmldb" datafld="name"<</span> <br> <span datasrc="#xmldb" datafld="sex"></span> </body> </html> |
注意這段代碼沒(méi)有初始化一個(gè)XML-DSO對(duì)象。這是因?yàn)閄ML數(shù)據(jù)島的使用中已經(jīng)隱式地創(chuàng)建了一個(gè)。輸出應(yīng)為:
Premshree Pillai
male
注意在XML數(shù)據(jù)島中有兩個(gè)<name>和<sex>標(biāo)記。使用這個(gè)方法,你只能提取這些標(biāo)記中的第一個(gè)實(shí)例。代碼列表2中的代碼使用<TABLE>標(biāo)記提取所有的實(shí)例:
輸出將是:
| Name | Sex |
| Premshree Pillai | male |
| Vinod | male |
在代碼列表2中,<TABLE>標(biāo)記使用<TD>標(biāo)記內(nèi)的<DIV>標(biāo)記提取數(shù)據(jù)。表格將自動(dòng)重復(fù)<member>(<name>和<sex>的母標(biāo)記)的每個(gè)實(shí)例。
代碼列表2:
| <!-- example2.htm --> <html> <head> <title>XML DSO-example2.htm</title> </head> <body bgcolor="#FFFFFF"> <xml id="xmldb"> <db> <member> <name>Premshree Pillai<name> <sex>male</sex> </member> <member> <name>Vinod</name> <sex>male</sex> </member> </db> </xml> <table datasrc="#xmldb" border="1"> <thead> <th>Name</th> <th>Sex</th> </thead> <tr> <td><div datafld="name"></div></td> <td><div datafld="sex"></div></td> </tr> </table> </body> </html> |
使用外部XML文件提取數(shù)據(jù)
為了使用XML-DSO加載一個(gè)外部XML文件,你必須顯式的包含這個(gè)對(duì)象并且使用一些JavaScript。
首先創(chuàng)建一個(gè)XML-DSO對(duì)象,使用ID myXML。添加寬度和高度屬性到<OBJECT>標(biāo)記中,然后設(shè)置它們的值為0。這保證XML-DSO對(duì)象不會(huì)占據(jù)你的Web頁(yè)面的任何空間。
其次,使用datasrc創(chuàng)建一個(gè)象myXML一樣的表--類似于代碼列表2中一樣。代碼使用<DIV>標(biāo)記(在TD標(biāo)記之)提取數(shù)據(jù),使用datafld作為第一欄的信息,并且使用URL作為第二欄。添加<SCRIPT>標(biāo)記,因?yàn)樵谶@里,外部的XML使用Java腳本顯式地聲明你想要加載的XML文件。
設(shè)置變量xmlDso為myXML.XMLDocument。myXML引用你已經(jīng)創(chuàng)建的對(duì)象。接下來(lái),使用XML-DSO的load()方法加載example3.xml。文件example3.xml連接到對(duì)象myXML上。
| <!-- example3.xml --> <?xml version="1.0" ?> <ticker> <item> <message>JavaScript Ticker using XML DSO</message> <URL>http://someURL.com</URL> </item> </ticker> |
現(xiàn)在,研究一下下面的HTML頁(yè)面:
| <!-- example3.htm --> <html> <head> <title>XML DSO-example3.htm</title> <script language="JavaScript"> function load() { var xmlDso=myXML.XMLDocument; xmlDso.load("example3.xml"); } </script> </head> <body bgcolor="#FFFFFF" onLoad="load()"> <object id="myXML" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" width="0" height="0"></object> <table datasrc="#myXML" border="1"> <thead> <th>Message</th> <th>URL</th> </thead> <tr> <td><div datafld="message"></div></td> <td><div datafld="URL"></div></td> </tr> </table> </body> </html> |
輸出應(yīng)是:
Message URL
JavaScript Ticker using XML DSO http://someURL.com
上面的腳本非常特殊化。下面給出一個(gè)更一般的腳本:
| <script language="JavaScript"> var xmlDso; function load(xmlFile, objName) { eval('xmlDso='+objName+'.XMLDocument'); xmlDso.load(xmlFile); } </script> Now, to load any XML file use: load("SomeXMLFile.xml","anyXmlDsoObject"); |
使用XML-DSO和JavaScript
假設(shè)你有一個(gè)包含姓名、電子郵件地址和電話號(hào)碼的XML文件。你想使用它構(gòu)建一個(gè)應(yīng)用程序,顯示每個(gè)人的檔案--一次顯示一個(gè)。用戶將使用"Next"和"Previous"按鈕瀏覽每個(gè)人的數(shù)據(jù)。Javascript可以幫助你實(shí)現(xiàn)這個(gè)目的。
下面的代碼使用記錄集方法把文件中所有的數(shù)據(jù)保存到一個(gè)變量memberSet中。moveNext()方法指向下一個(gè)數(shù)據(jù)項(xiàng)(下一行)。腳本然后載入XML文件example4.xml,把記錄保存到變量memberSet中。第一個(gè)記錄將被顯示,但是memberSet.moveNext()指向文件中相對(duì)于前一個(gè)指定數(shù)據(jù)的下一個(gè)記錄。
| <!-- example4.xml --> <?xml version="1.0" ?> <myDB> <member> <name>Premshree Pillai</name> <sex>male</sex> </member> <member> <name>Vinod</name> <sex>male</sex> </member> <member> <name>Santhosh</name> <sex>male</sex> </member> </myDB> |
這里是相應(yīng)的HTML文件:
| <!-- example4.htm --> <html> <head> <title>XML DSO-example4.htm</title> <script language="JavaScript"> function load() { var xmlDso=myDB.XMLDocument; xmlDso.load("example4.xml"); /* Get the complete record set */ var memberSet=myDB.recordset; /* Go to next data */ memberSet.moveNext(); } </script> </head> <body bgcolor="#FFFFFF" onLoad="load()"> <object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" width="0" height="0"></object> <span datasrc="#myDB" datafld="name"></span> </body> </html> |
輸出應(yīng)是:
Vinod
下面給出更多使用JavaScript操作XML-DSO的方法:
· movePrevious(): 指向前一個(gè)數(shù)據(jù)項(xiàng)。
· moveFirst(): 指向第一個(gè)數(shù)據(jù)項(xiàng)。
· moveLast(): 指向最后一個(gè)數(shù)據(jù)項(xiàng)。
· EOF: 這個(gè)屬性用來(lái)檢測(cè)我們是否已經(jīng)到達(dá)數(shù)據(jù)記錄的底部。
使用XML-DSO和JavaScript
假設(shè)你有一個(gè)包含姓名、電子郵件地址和電話號(hào)碼的XML文件。你想使用它構(gòu)建一個(gè)應(yīng)用程序,顯示每個(gè)人的檔案--一次顯示一個(gè)。用戶將使用"Next"和"Previous"按鈕瀏覽每個(gè)人的數(shù)據(jù)。Javascript可以幫助你實(shí)現(xiàn)這個(gè)目的。
下面的代碼使用記錄集方法把文件中所有的數(shù)據(jù)保存到一個(gè)變量memberSet中。moveNext()方法指向下一個(gè)數(shù)據(jù)項(xiàng)(下一行)。腳本然后載入XML文件example4.xml,把記錄保存到變量memberSet中。第一個(gè)記錄將被顯示,但是memberSet.moveNext()指向文件中相對(duì)于前一個(gè)指定數(shù)據(jù)的下一個(gè)記錄。
| <!-- example4.xml --> <?xml version="1.0" ?> <myDB> <member> <name>Premshree Pillai</name> <sex>male</sex> </member> <member> <name>Vinod</name> <sex>male</sex> </member> <member> <name>Santhosh</name> <sex>male</sex> </member> </myDB> |
這里是相應(yīng)的HTML文件:
| <!-- example4.htm --> <html> <head> <title>XML DSO-example4.htm</title> <script language="JavaScript"> function load() { var xmlDso=myDB.XMLDocument; xmlDso.load("example4.xml"); /* Get the complete record set */ var memberSet=myDB.recordset; /* Go to next data */ memberSet.moveNext(); } </script> </head> <body bgcolor="#FFFFFF" onLoad="load()"> <object id="myDB" CLASSID="clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" width="0" height="0"></object> <span datasrc="#myDB" datafld="name"></span> </body> </html> |
輸出應(yīng)是:
Vinod
下面給出更多使用JavaScript操作XML-DSO的方法:
· movePrevious(): 指向前一個(gè)數(shù)據(jù)項(xiàng)。
· moveFirst(): 指向第一個(gè)數(shù)據(jù)項(xiàng)。
· moveLast(): 指向最后一個(gè)數(shù)據(jù)項(xiàng)。
· EOF: 這個(gè)屬性用來(lái)檢測(cè)我們是否已經(jīng)到達(dá)數(shù)據(jù)記錄的底部。
initTicker()首先檢查是否有IE 4+。如果瀏覽器是IE4+,這個(gè)XML文件被作為一個(gè)參數(shù)被傳遞并載入。如果定時(shí)器失敗了,那么調(diào)用xmlDsoTicker()函數(shù)。xmlDsoTicker()除了xmlFile參數(shù)以外,和initTicker()有相同的參數(shù),因?yàn)閄ML文件已經(jīng)被載入。xmlDsoTicker()檢查變量counter(初始值為maxMsgs)是否小于maxMsgs-1。如果是,moveNext()方法指向tickerSet中下一個(gè)數(shù)據(jù)項(xiàng)。
HTML頁(yè)面的BODY包含下面的代碼:
| <a href="" datasrc="#ticker" datafld="URL" class="tickerStyle"> <span datasrc="#ticker" datafld="message"></span> </a> |
圖1:定時(shí)器應(yīng)用程序顯示輸出。
在這段代碼中,<A>標(biāo)記把XML文件的URL作為它的datafld。<SPAN>標(biāo)記把XML文件的信息作為它的datafld。這個(gè)信息在<SPAN>元素中顯示,然后整個(gè)信息可以通過(guò)這段信息相應(yīng)的URL連接。
這樣,<A>和<SPAN>元素包含下一個(gè)數(shù)據(jù)項(xiàng)(URL和信息)。在一段延遲以后,<A>和<SPAN>指向下一個(gè)數(shù)據(jù)。只要counter<maxMsgs-1(計(jì)數(shù)器每次遞增),這個(gè)操作就會(huì)發(fā)生。如果counter<maxMsgs-1是假,計(jì)數(shù)器就被設(shè)置為0,然后指向tickerSet中的第一個(gè)數(shù)據(jù)項(xiàng)。
總結(jié)
以上是生活随笔為你收集整理的整理javascript操作文件说明.的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到自己胎动是什么意思
- 下一篇: 角色转变