首頁  >  文章  >  web前端  >  JavaScript中使用ActiveXObject操作本機資料夾的方法_javascript技巧

JavaScript中使用ActiveXObject操作本機資料夾的方法_javascript技巧

WBOY
WBOY原創
2016-05-16 16:54:00929瀏覽

在Windows平台上, js可以調用很多Windows提供的ActivexObject,本文就使用js來實現文檔處理, 和使用js編寫ActiveX做一個簡單介紹.

複製程式碼 程式碼如下:

PUBL "///W3/IC DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 
  New Document title> <p> <br><script type="text/javascript"><BR> function readFolder(){<BR> var filePath = "d:\test\";<BR> var fso = new ActiveXObject ("Scripting.FileSystemObject");   //載入控制項<BR> var f = fso.GetFolder(filePath);<BR> var underFiles = new Enumerator(f.files); //資料夾下檔案<BR>for ( ;!underFiles.atEnd();underFiles.moveNext()){   <BR>             var fn = "" underFile 🎜>          var content = readFile(fn,fso });<BR>                 alert(content);<BR>            <BR> }<BR>function readFile(path,fso){</script></p>var f1 = fso.GetFile(path);<p>var fh = fso.OpenTextFile(f1, 1/*reading*/);<br>               var content = '';<br>                     content = fh.ReadLine();<br>               }<br>    🎜> }<br> <br>function writeExcel(){<br> var ExcelApp = new ActiveXObject("Excel.Application");<br>  var ExcelSheet = new ActiveXObject("Excel.Sheet");<br>  ExcelSheet = new ActiveXObject("Excel.Sheet");<br>  ExcelSheet.Application.Visibleible. ;</p> ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";<p> ExcelSheet.SaveAs("d:\TEST.XLS");<ex> Sheet.SaveAs("d:\TEST.XLS");<ex> ShecelSheet.Application .Quit();<br>}<br><br> <br>  <input type="button" value="遍歷資料夾" onclick="readFolder()"><br> <input type="button" value="寫excel" onclick="writeExcel()"><br> <br><br><br></ex></ex></p> <p>JavaScript中ActiveXObject物件是啟用並傳回 Automation 物件的參考。使用方法:</p> <p>newObj = new ActiveXObject( servername.typename[, location])</p> <p>ActiveXObject 物件語法有這些部分:其中newObj是必選項。要賦值為 ActiveXObject 的變數名稱。 <br>servername是必選項。提供該物件的應用程式的名稱。 <br>typename是必選項。要建立的物件的類型或類別。 <br>location是可選項。建立該物件的網路伺服器的名稱。 </p> <p>切記:ActiveX是微軟的東西,故而這玩意兒只有IE才支持! </p> <p>javaScript中利用ActiveXObject來建立FileSystemObject操作檔</p> <p>一、功能實作核心:FileSystemObject 物件</p> <p>要在javascript中實作檔案操作功能,主要就是依賴FileSystemobject物件。 </p> <p>二、FileSystemObject程式</p> <p>使用FileSystemObject 物件進行程式設計很簡單,一般要經過以下的步驟: 建立FileSystemObject物件、應用相關方法、存取物件相關屬性 。 </p> <p>(一)建立FileSystemObject物件</p> <p>建立FileSystemObject物件的程式碼只要1行:<br>var fso = new ActiveXObject("Scripting.FileSystemObject");<br>上述程式碼執行後,fso就變成一個FileSystemObject物件實例。 </p> <p>(二)應用相關方法</p> <p>建立物件實例後,就可以使用物件的相關方法了。例如,使用CreateTextFile方法建立一個文字檔案:<br>var fso = new ActiveXObject("Scripting.FileSystemObject");<br>var f1 = fso.createtextfile("c:\myjstest.txt",true");<br>(三)存取物件相關屬性<br>要存取物件的相關屬性,首先要建立指向物件的句柄,這就要透過get系列方法實現:GetDrive負責取得磁碟機信息,GetFolder負責取得資料夾信息,GetFile負責取得檔案資訊。 GetFile("c:\myjstest.txt");<br>然後,使用f1存取物件的相關屬性。 <br><br></p> <p></p> <div class="codetitle">複製程式碼<span><a style="CURSOR: pointer" data="85208" class="copybut" id="copybut85208" onclick="doCopy('code85208')"><u> 程式碼如下:</u></a></span>var fso = new ActiveXObject("Scripting." ;</div>var f1 = fso.GetFile("c:\myjstest.txt");<div class="codebody" id="code85208">alert("File last modified: " f1.DateLastModified);<br><br><br> <br>執行上面最後一句話後,將顯示c:myjstest.txt的最後修改日期屬性值。 </div>但有一點請注意:對於使用create方法建立的對象,就不必再使用get方法獲取對象句柄了,這時直接使用create方法建立的句柄名稱就可以: <p><br></p> <p></p> <div class="codetitle">複製程式碼<span><a style="CURSOR: pointer" data="63182" class="copybut" id="copybut63182" onclick="doCopy('code63182')"><u> 程式碼如下:</u></a></span>var fso = new ActiveXObject("Scripting." ;</div>var f1 = fso.createtextfile("c:\myjstest.txt",true");<div class="codebody" id="code63182">alert("File last modified: " f1.DateLastModified);<br><br><br> <br>三、操作驅動器(Drives)</div> 使用FileSystemObject物件來程式設計操作磁碟機(Drives)和資料夾(Folders)很容易,這就像在Windows檔案瀏覽器中對檔案進行互動操作一樣,例如:拷貝、移動資料夾,取得資料夾的屬性。 <p>(一)Drives物件屬性</p>Drive物件負責收集系統中的實體或邏輯磁碟機資源內容,它具有下列屬性:<p>l TotalSize:以位元組(byte)為單位計算的磁碟機大小。 <br>l AvailableSpace或FreeSpace:以位元組(byte)為單位計算的磁碟機可用空間。 <br>l DriveLetter:驅動器字母。 <br>l DriveType:磁碟機類型,取值為:removable(行動媒體)、fixed(固定媒體)、network(網路資源)、CD-ROM或RAM碟。 <br>l SerialNumber:驅動器的系列碼。 <br>l FileSystem:所在磁碟機的檔案系統類型,取值為FAT、FAT32和NTFS。 <br>l IsReady:驅動器是否可用。 <br>l ShareName:共享名稱。 <br>l VolumeName:卷標名稱。 <br>l Path和RootFolder:磁碟機的路徑或根目錄名稱。 <br> <br>(二)Drive物件操作例程<br> </p>下面的程式顯示磁碟機C的捲標、總容量和可用空間等資訊:<p></p> <p><br></p> <div class="codetitle">複製程式碼<span><a style="CURSOR: pointer" data="2703" class="copybut" id="copybut2703" onclick="doCopy('code2703')"><u> 程式碼如下:</u></a></span>var fso, drv, s ="";</div>fso = new ActiveXObject("Scripting.FileSystemObject");<div class="codebody" id="code2703">drv = fso.GetDrive(fso.GetDriveName("c :\"));<br>s = "Drive C:" " – ";<br>s = drv.VolumeName "n";<br>s = "Total Space: " drv.TotalSize / 1024;<br>s = " Kb" "n";<br>s = "Free Space: " drv.FreeSpace / 1024;<br>s = " Kb" "n";<br>alert(s);<br><br> <p>四、操作資料夾(Folders)</p> <p>涉及到資料夾的操作包括建立、移動、刪除以及取得相關屬性。 <br>Folder物件操作例程 :<br>下面的例程將練習取得父資料夾名稱、建立資料夾、刪除資料夾、判斷是否為根目錄等操作:</p> <p></p> <div class="codetitle"> <span><a style="CURSOR: pointer" data="84140" class="copybut" id="copybut84140" onclick="doCopy('code84140')"><u>複製程式碼</u></a></span> 程式碼如下:</div> <div class="codebody" id="code84140"> <br>var fso, fldr, s = "";<br><br>var fso, fldr, s = "";<br><br>var fso, fldr, s = "";<br><br>var fso, fldr, s = "";<br><br>var fso, fldr, s = ""; >// 建立FileSystemObject物件實例<br>fso = new ActiveXObject("Scripting.FileSystemObject");<br>// 取得Drive 物件<br>fldr = fso.GetFolder("c:\");<br>/ / 顯示父目錄名稱<br>alert("Parent folder name is: " fldr "n");<br>// 顯示所在drive名稱<br>alert("Contained on drive " fldr.Drive "n"); <br>// 判斷是否為根目錄<br>if (fldr.IsRootFolder)<br>alert("This is the root folder.");<br>else<br>alert("This folder isn't a root folder.");<br>alert("nn");<br>// 建立新資料夾<br>fso.CreateFolder ("C:\Bogus");</div>alert("Created folder C: \Bogus" "n");// 顯示資料夾基礎名稱,不含路徑名稱<p>alert("Basename = " fso.GetBaseName("c:\bogus") "n");</p>// 刪除已建立的資料夾<p>fso.DeleteFolder ("C:\Bogus");<br>alert("Deleted folder C:\Bogus" "n");<br><br></p> <p>五、操作文件(Files)</p> <div class="codetitle"> <span>對文件進行的操作要比以上介紹的驅動器(Drive)和資料夾(Folder)操作複雜些,基本上分為以下兩個類別:對文件的創建、拷貝、移動、刪除操作和對文件內容的建立、新增、刪除和讀取操作。以下分別詳細介紹。 <a style="CURSOR: pointer" data="66386" class="copybut" id="copybut66386" onclick="doCopy('code66386')">(一)建立文件<u>一共有3種方法可用於建立一個空文本文件,而這種文件有時也叫做文字流(text stream)。 </u>第一種是使用CreateTextFile方法。程式碼如下:</a> </span> </div> <div class="codebody" id="code66386"> <br><br>複製程式碼<br><br> </div> 程式碼如下:<p></p>var fso, f1;<p></p> <div class="codetitle"> <span>var fso, f1;<a style="CURSOR: pointer" data="93090" class="copybut" id="copybut93090" onclick="doCopy('code93090')">> ("Scripting.FileSystemObject");<u>f1 = fso.CreateTextFile("c:\testfile.txt", true);</u></a></span> </div>第二種是使用OpenTextFile方法,並加入上ForWriting屬性,ForWriting的值為2。程式碼如下:<div class="codebody" id="code93090"> <br><br><br><br><br>複製程式碼</div> <p> 程式碼如下:<br></p> <div class="codetitle"><span>var fso, ts<a style="CURSOR: pointer" data="12980" class="copybut" id="copybut12980" onclick="doCopy('code12980')">var Forriting>var fso, ts<u>var. ;</u>fso = new ActiveXObject("Scripting.FileSystemObject");</a>ts = fso.OpenTextFile("c:\test.txt", ForWriting, true);</span></div> <div class="codebody" id="code12980"> <br>第三種是使用OpenAsTextStream方法,同樣要設定好ForWriting屬性。 <br><br><br><br><br>複製程式碼<br> </div> 程式碼如下:<p></p> <p>var fso, f1, ts;<br><br><br>var fso, f1, ts;</p>varWriting = 2;<p>fso = new ActiveXObject("Scripting.FileSystemObject");</p>fso.CreateTextFile ("c:\test1.txt");<p>f1 = fso.GetFile("c:\test1. txt");</p>ts = f1.OpenAsTextStream(ForWriting, true);<p></p> <div class="codetitle"> <span> <a style="CURSOR: pointer" data="79868" class="copybut" id="copybut79868" onclick="doCopy('code79868')">(二)加入資料到檔案<u> </u>當文件建立後,一般要依照"開啟檔案->填寫資料->關閉檔案"的步驟實現新增資料到檔案的目的。 </a>開啟檔案可使用FileSystemObject物件的OpenTextFile方法,或使用File物件的OpenAsTextStream方法。 </span>填寫資料要使用TextStream物件的Write、WriteLine或WriteBlankLines方法。在同是實現寫入資料的功能下,這3者的差別在於:Write方法不在寫入資料末尾新增換行符,WriteLine方法要在最後加上一個新換行符,而WriteBlankLines則增加一個或多個空行。 </div>關閉檔案可使用TextStream物件的Close方法。 <div class="codebody" id="code79868"> <br>(三)建立檔案及新增資料例程<br> <br>下面的程式碼將建立檔案、新增資料、關閉檔案幾個步驟結合起來進行應用:<br> <br><br><br><br><br>複製程式碼<br><br><br> 程式碼如下:<br> </div>var fso, tf// 建立新檔案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(); <p>(四)讀取檔案內容</p> <p>從文字檔案讀取資料要使用TextStream物件的Read、ReadLine或ReadAll 方法。 Read方法用於讀取檔案中指定數量的字元;ReadLine方法讀取一整行,但不包括換行符;ReadAll方法則讀取文字檔案的整個內容。讀取的內容存放於字串變數中,用於顯示、分析。使用Read或ReadLine方法讀取檔案內容時,如果要跳過一些部分,就要用到Skip或SkipLine方法。 <br>下面的程式碼示範開啟檔案、填入數據,然後讀取數據:</p> <p></p> <div class="codetitle"> <span><a style="CURSOR: pointer" data="79204" class="copybut" id="copybut79204" onclick="doCopy('code79204')"><u>複製程式碼</u></a></span> 程式碼如下:</div> <div class="codebody" id="code79204"> <br>var fso, f1, ts, s;<br><br>var fso, f1, ts, s;<br> var ForReading = 1;<br>fso = new ActiveXObject("Scripting.FileSystemObject");<br>// 建立檔案<br>f1 = fso.CreateTextFile("c:\testfile.txt", true);<br>// 填寫一行資料<br>f1.WriteLine("Hello World");<br>f1.WriteBlankLines(1);<br>// 關閉檔案<br>f1.Close();<br>//開啟檔案<br>ts = fso.OpenTextFile("c:\testfile.txt", ForReading);<br>// 讀取檔案一行內容到字串<br>s = ts.ReadLine();<br> // 顯示字串資訊<br>alert("File contents = '" s "'");<br>// 關閉檔案</div>ts.Close();<p></p> <p>(五)移動、拷貝和刪除檔案<br> <br>對於以上三種檔案操作,javascript各有兩種對應的方法:File.Move 或FileSystemObject.MoveFile用於移動檔案;File.Copy 或FileSystemObject.CopyFile用於拷貝檔案;File.Delete 或FileSystemObject.DeleteFile用於刪除檔案。 </p> <div class="codetitle">下面的程式碼示範在磁碟機C的根目錄下建立一個文字文件,填寫一些內容,然後將檔案移到tmp目錄下,再在目錄temp下面建立一個檔案拷貝,最後刪除這兩個目錄的文件:<span><a style="CURSOR: pointer" data="54637" class="copybut" id="copybut54637" onclick="doCopy('code54637')"><u></u></a>複製代碼</span> </div> <div class="codebody" id="code54637"> 代碼如下:<br><br><br>var fso, f1, f2, s;<br>fso = new ActiveXObject("Scripting.FileSystemObject");<br>f1 = fso.CreateTextFile("c:\testfile.txt", true);<br>// 寫一行<br>f1.Write("This is a test.");<br>// 關閉檔案<br>f1.Close();<br>// 取得C:根目錄下的檔案句柄<br>f2 = fso.GetFile("c:\ testfile.txt");<br>// 移動檔案到 mp目錄下<br>f2.Move ("c:\tmp\testfile.txt");<br>// 拷貝檔案到 emp目錄下<br> f2.Copy ("c:\temp\testfile.txt");<br>// 取得檔案句柄<br>f2 = fso.GetFile("c:\tmp\testfile.txt");<br>f3 = fso.GetFile("c:\temp\testfile.txt");<br>// 刪除檔案<br>f2.Delete();</div>f3.Delete();<p></p> <p>六、結 語</p> 透過上述對FileSystemObject的各種物件、屬性和方法的介紹和範例,相信你已經對如何使用javascript語言在頁面中操作磁碟機、檔案和資料夾有了清楚的認識。但上述提及的例程都非常簡單,要全面、靈活地掌握javascript文件操作技術,還需要大量的實作練習。而且還有一點提醒大家,由於涉及在瀏覽器中進行文件讀寫這樣的高級操作,對於默認的瀏覽器安全級別而言,在代碼運行前都會有一個信息提示,這點請在實際環境中提示訪客註意。 </div>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn