Javascript之檔案操作

來源:互聯網
上載者:User

一、功能實現核心:FileSystemObject 對象
要在javascript中實現檔案操作功能,主要就是依靠FileSystemobject對象。
二、FileSystemObject編程
使用FileSystemObject 對象進行編程很簡單,一般要經過如下的步驟: 建立FileSystemObject對象、應用相關方法、訪問對象相關屬性 。
(一)建立FileSystemObject對象
建立FileSystemObject對象的代碼只要1行:
var fso = new ActiveXObject("Scripting.FileSystemObject");
上述代碼執行後,fso就成為一個FileSystemObject對象執行個體。
(二)應用相關方法
建立對象執行個體後,就可以使用對象的相關方法了。比如,使用CreateTextFile方法建立一個文字檔:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f1 = fso.createtextfile("c:\\myjstest.txt",true");
(三)訪問對象相關屬性
要訪問對象的相關屬性,首先要建立指向對象的控制代碼,這就要通過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);
三、操作磁碟機(Drives)
使用FileSystemObject對象來編程操作磁碟機(Drives)和檔案夾(Folders)很容易,這就象在Windows檔案瀏覽器中對檔案進行互動操作一樣,比如:拷貝、移動檔案夾,擷取檔案夾的屬性。
(一)Drives對象屬性
Drive對象負責收集系統中的物理或邏輯磁碟機資源內容,它具有如下屬性:
l TotalSize:以位元組(byte)為單位計算的磁碟機大小。
l AvailableSpace或FreeSpace:以位元組(byte)為單位計算的磁碟機可用空間。
l DriveLetter:磁碟機字母。
l DriveType:磁碟機類型,取值為:removable(移動介質)、fixed(固定介質)、network(網路資源)、CD-ROM或者RAM盤。
l SerialNumber:磁碟機的系列碼。
l FileSystem:所在磁碟機的檔案系統類型,取值為FAT、FAT32和NTFS。
l IsReady:磁碟機是否可用。
l ShareName:共用名稱。
l VolumeName:卷標名稱。
l Path和RootFolder:磁碟機的路徑或者根目錄名稱。
(二)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);
四、操作檔案夾(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");
五、操作檔案(Files)
對檔案進行的操作要比以上介紹的磁碟機(Drive)和檔案夾(Folder)操作複雜些,基本上分為以下兩個類別:對檔案的建立、拷貝、移動、刪除操作和對檔案內容的建立、添加、刪除和讀取操作。下面分別詳細介紹。
(一)建立檔案
一共有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);
(二)添加資料到檔案
當檔案被建立後,一般要按照“開啟檔案->填寫資料->關閉檔案”的步驟實現添加資料到檔案的目的。
開啟檔案可使用FileSystemObject對象的OpenTextFile方法,或者使用File對象的OpenAsTextStream方法。
填寫資料要使用到TextStream對象的Write、WriteLine或者WriteBlankLines方法。在同是實現寫入資料的功能下,這3者的區別在於:Write方法不在寫入資料末尾添加新分行符號,WriteLine方法要在最後添加一個新分行符號,而WriteBlankLines則增加一個或者多個空行。
關閉檔案可使用TextStream對象的Close方法。
(三)建立檔案及添加資料常式
下面的代碼將建立檔案、添加資料、關閉檔案幾個步驟結合起來進行應用:
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();
(四)讀取檔案內容
從文字檔中讀取資料要使用TextStream對象的Read、ReadLine或ReadAll 方法。Read方法用於讀取檔案中指定數量的字元;ReadLine方法讀取一整行,但不包括分行符號;ReadAll方法則讀取文字檔的整個內容。讀取的內容存放於字串變數中,用於顯示、分析。

方法或者屬性 描述
BuildPath()
產生一個檔案路徑
CopyFile() 複製檔案
CopyFolder() 複製目錄
CreateFolder() 建立新目錄
CreateTextFile() 產生一個檔案
DeleteFile() 刪除一個檔案
DeleteFolder() 刪除一個目錄
DriveExists() 檢驗盤符是否存在
Drives 返回盤符的集合
FileExists() 檢驗檔案是否存在
FolderExists 檢驗一個目錄是否存在
GetAbsolutePathName() 取得一個檔案的絕對路徑
GetBaseName() 取得檔案名稱
GetDrive() 取得盤符名
GetDriveName() 取得盤符名
GetExtensionName() 取得檔案的尾碼
GetFile() 組建檔案對象
GetFileName() 取得檔案名稱
GetFolder() 取得目錄對象
GetParentFolderName 取得檔案或目錄的父目錄名
GetSpecialFolder() 取得特殊的目錄名
GetTempName() 產生一個臨時檔案對象
MoveFile() 移動檔案
MoveFolder() 移動目錄
OpenTextFile() 開啟一個檔案流

f.Files //目錄下所有檔案集合
f.attributes //檔案屬性
Case 0 Str="普通檔案。沒有設定任何屬性。 "
Case 1 Str="唯讀檔案。可讀寫。 "
Case 2 Str="隱藏檔案。可讀寫。 "
Case 4 Str="系統檔案。可讀寫。 "
Case 16 Str="檔案夾或目錄。唯讀。 "
Case 32 Str="上次備份後已更改的檔案。可讀寫。 "
Case 1024 Str="連結或捷徑。唯讀。 "
Case 2048 Str=" 壓縮檔。唯讀。"
f.Datecreated // 建立時間
f.DateLastAccessed //上次訪問時間
f.DateLastModified // 上次修改時間
f.Path //檔案路徑
f.Name //檔案名稱
f.Type //檔案類型
f.Size // 檔案大小(單位:位元組)
f.ParentFolder //父目錄
f.RootFolder // 根目錄

執行個體說明

BuildPath(路徑,檔案名稱) //這個方法會對給定的路徑加上檔案,並自動加上分界符
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.BuildPath("c:\\tmp", "51js.txt"); //產生 c:\tmp\51js.txt的路徑
alert(newpath);
-->
</SCRIPT>

CopyFile(源檔案, 目標檔案, 覆蓋) //複製源檔案到目標檔案,當覆蓋值為true時,如果目標檔案存在會把檔案覆蓋
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.CopyFile("c:\\autoexec.bat", "d:\\autoexec.bak");
-->
</SCRIPT>

CopyFolder(對象目錄,目標目錄 ,覆蓋) //複製對象目錄到目標目錄,當覆蓋為true時,如果目標目錄存在會把檔案覆蓋
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder("c:\\WINDOWS\\Desktop", "d:\\"); //把C盤的Desktop目錄複寫到D盤的根目錄
-->
</SCRIPT>

CreateFolder(目錄名) //建立一個新的目錄
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newFolderName = fso.CreateFolder("c:\\51JS"); //在C盤上建立一個51JS的目錄
-->
</SCRIPT>

CreateTextFile(檔案名稱, 覆蓋) //建立一個新的檔案,如果此檔案已經存在,你需要把覆蓋值定為true
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newFileObject = fso.CreateTextFile("c:\\autoexec51JS.bat", true); //指令碼將在C盤建立一個叫 autoexec51JS.bat的檔案
-->
</SCRIPT>

DeleteFile(檔案名稱, 唯讀?) //刪除一個檔案,如果檔案的屬性是唯讀話,你需要把唯讀值設為true
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject"); //為了安全我先把要刪除的autoexec.bat備份到你的D盤
var newpath = fso.CopyFile("c:\\autoexec.bat", "d:\\autoexec.bat"); //把C盤的autoexec.bat檔案刪除掉
fso.DeleteFile("c:\\autoexec.bat", true);
-->
</SCRIPT>

DeleteFolder(檔案名稱, 唯讀?)//刪除一個目錄,如果目錄的屬性是唯讀話,你需要把唯讀值設為true
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFolder("c:\\WINDOWS\\Desktop", "d:\\"); //為了安全我先把你C盤的Desktop目錄複寫到你D盤的根目錄
fso.DeleteFolder("c:\\WINDOWS\\Desktop", true); //把你的Desktop目錄刪除,但因為desktop是系統的東西,所以不能全部刪除,但.........
-->
</SCRIPT>

DriveExists(盤符) //檢查一個盤是否存在,如果存在就返會真,不存在就返回.......
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
hasDriveD = fso.DriveExists("d"); //檢查系統是否有D盤存在
hasDriveZ = fso.DriveExists("z"); //檢查系統是否有Z盤存在
if (hasDriveD) alert("你的系統內有一個D盤");
if (!hasDriveZ) alert("你的系統內沒有Z盤");
-->
</SCRIPT>

FileExists(檔案名稱) //檢查一個檔案是否存在,如果存在就返會真,不存在就返回.......
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
fileName = fso.FileExists("c:\\autoexec.bat");
if (fileName) alert("你在C盤中有autoexec.bat檔案,按下確定後這個檔案將被刪除!"); //開個玩笑:)
-->
</SCRIPT>

FolderExists(目錄名) //檢查一個目錄是否存在,如果存在就返會真,不存在就返回.......
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
folderName = fso.FolderExists("c:\\WINDOWS\\Fonts");
if (folderName) alert("按下確定後系統的字型檔將被刪除!"); //開個玩笑:)
-->
</SCRIPT>

GetAbsolutePathName(檔案對象) //返迴文件對象在系統的絕對路徑
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
pathName = fso.GetAbsolutePathName("c:\\autoexec.bat");
alert(pathName);
-->
</SCRIPT>

GetBaseName(檔案對象) //返迴文件對象的檔案名稱
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
baseName = fso.GetBaseName("c:\\autoexec.bat"); //取得autoexec.bat的檔案名稱autoexec
alert(baseName);
-->
</SCRIPT>

GetExtensionName(檔案對象) //檔案的尾碼
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
exName = fso.GetExtensionName("c:\\autoexec.bat"); //取得autoexec.bat尾碼bat
alert(exName);
-->
</SCRIPT>

GetParentFolderName(檔案對象) //取得父級的目錄名
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
parentName = fso.GetParentFolderName("c:\\autoexec.bat"); //取得autoexec.bat的父級目錄C盤
alert(parentName);
-->
</SCRIPT>

GetSpecialFolder(目錄代碼) //取得系統中一些特別的目錄的路徑,目錄代碼有3個分別是 0:安裝Window的目錄 1:系統檔案目錄 2:臨時檔案目錄
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
tmpFolder = fso.GetSpecialFolder(2); //取得系統臨時檔案目錄的路徑 如我的是 C:\windows\temp
alert(tmpFolder);
-->
</SCRIPT>

GetTempName() //產生一個隨機的臨時檔案對象,會以rad帶頭後面跟著些隨機數,就好象一些軟體在安裝時會產生*.tmp
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
tmpName = fso.GetTempName(); //我在測試時就產生了radDB70E.tmp
alert(tmpName);
-->
</SCRIPT>

MoveFile(源檔案, 目標檔案) //把源檔案移到目標檔案的位置
<SCRIPT LANGUAGE="JavaScript">
<!--
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.MoveFile("c:\\autoexec.bat", "d:\\autoexec.bat"); //把C盤的autoexec.bat檔案移移動到D盤
-->
</SCRIPT>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.