?? 用java 腳本訪問文件系統.txt
字號:
用Java 腳本訪問文件系統
--File System Object對象模型的應用
我們在編寫WSH、ASP、HTML應用程序時經常需要提取和保存一些信息,以及對文件進行刪除、復制等操作。提取外部信息除了可以使用數據庫之外,還可以使用文本文件。本文就簡要介紹用腳本訪問文件系統。
Microsoft Scripting Runtime包含一個對象模型--File System Object(即FSO模型,文件系統對象),可以訪問宿主計算機的文件系統。
1.Scripting FSO 對象模型
表1 FSO對象模型中的對象與集合
對象與集合 說明
File System Object 對象 這是FSO模型的基本對象。要生成File System Object對象才能訪問FSO模型中的其他對象。
Drive 對象 可以從所有連接的驅動器設備訪問磁盤驅動器信息,包括網絡盤。
Drives 集合 提供連接系統的所有磁盤驅動器列表,不管其類型如何,不管是否有媒介(例如,光驅中即使沒有光盤,也會在Drives集合中顯示)。
File 對象 提供系統級文件訪問。可以生成、刪除或移動文件,也可以查詢系統、文件信息,如文件名稱、路徑和其他屬性
Files 集合 包含文件夾中的所有文件列表
Folder 對象 提供系統級文件夾訪問。可以生成、刪除或移動文件夾,也可以查詢系統、文件夾信息,如名稱、路徑和其他屬性
Folders 集合 包含文件夾中的所有文件夾(目錄)列表
Text Stream 對象 可以讀取和寫入文本文件
創建FSO對象
var fso = new ActiveXObject("Scripting.FileSystemObject");
注意:在網頁中創建該對象時,IE會提示腳本調用的ActiveX控件可能不安全,需用戶確認后方能繼續運行;但在HTML應用程序中沒有該提示。
2.訪問文件
表2 FSO對象的方法
方法 描述
Drives()方法 返回盤符的集合
DriveExists()方法 檢驗磁盤驅動器是否存在
GetDriveName()方法 獲取盤符
CreateFolder()方法 創建新文件夾
FolderExists()方法 檢驗一個文件夾是否存在
DeleteFolder()方法 刪除一個文件夾
CopyFolder()方法 復制文件夾
MoveFolder()方法 移動文件夾
GetParentFolderName()方法 返回文件或文件夾的父文件夾名
GetSpecialFolder(常數)方法 獲取特殊的文件夾的路徑 (常數:0:安裝Window的目錄 1:系統文件所在目錄 2:系統臨時文件目錄)
FileExists()方法 檢驗文件是否存在
DeleteFile()方法 刪除一個文件
CopyFile()方法 復制文件
MoveFile()方法 移動文件
CreateTextFile()方法 生成一個文件流
OpenTextFile()方法 打開一個文件流
GetAbsolutePathName()方法 獲取一個文件的絕對路徑
GetFileName()方法 獲取文件名(包括擴展名)
GetBaseName()方法 獲取文件名(不包括擴展名)
GetExtensionName()方法 獲取文件的擴展名
GetTempName()方法 生成一個臨時文件對象,文件名以"rad"開頭,后面跟隨機數,擴展名為.tmp
注意:表示路徑時傳統的"\"要用"\\"代替,例如c:\\autoexec.bat
檢查磁盤驅動器是否存在 DriveExists(盤符)
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
hasDriveC = fso.DriveExists("c"); //檢查系統是否有C盤存在,返回一個布爾值
hasDriveZ = fso.DriveExists("z"); //檢查系統是否有Z盤存在
if (hasDriveC) alert("你的系統內有一個C盤");
if (!hasDriveZ) alert("你的系統內沒有Z盤");
</SCRIPT>
創建文件夾 CreateFolder(文件名)
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newFolderName = fso.CreateFolder("c:\\yesky"); //在C盤上創建一個文件夾
</SCRIPT>
復制文件 CopyFile(源文件, 目標文件,是否覆蓋) 當覆蓋值為true時,如果目標文件已經存在,會把原文件覆蓋
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.CopyFile("c:\\autoexec.bat", "d:\\autoexec.bak");
</SCRIPT>
刪除一個文件 DeleteFile(文件名, 參數) 如果目錄的屬性是只讀的話,需要把參數值設為true
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var newpath = fso.CopyFile("c:\\autoexec.bat", "d:\\autoexec.bat");//先把要刪除的文件備份
fso.DeleteFile("c:\\autoexec.bat", true); //把C盤的autoexec.bat文件刪除掉
</SCRIPT>
以上幾個例子包含了常用的操作類型,其他操作與此類似,例如復制文件和復制文件夾只是命令不同,參數完全一樣。可以根據表2推演其他命令的使用方法,熟悉DOS的朋友應該可以很快掌握。如果需要每個方法的例子,請和我聯系,限于篇幅,在此不一一列出。
3.其他FSO對象的屬性與方法
Drive,Folder,File對象各自包含許多的,也大都是些不常用到的屬性和方法,在此僅舉例說明幾個常用命令。
更改文件(文件夾)名稱
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.GetFile("c:\\autoexec.bat"); //腳本將創建一個文件對象
f.Name="autoexec.bak"; //通過設置Name屬性更改文件名
</SCRIPT>
獲取磁盤驅動器剩余空間
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var d = fso.GetDrive("c:"); //腳本將創建C盤為一個驅動器對象
alert(d.FreeSpace); //FreeSpace屬性檢測磁盤驅動器剩余空間,以字節為單位
</SCRIPT>
檢測驅動器是否準備就緒(主要用于檢測軟驅、光驅中是否有盤)
<SCRIPT LANGUAGE="JavaScript">
var fso = new ActiveXObject("Scripting.FileSystemObject");
var d = fso.GetDrive("a:"); //腳本將創建A盤(軟驅)為一個驅動器對象
alert(d.IsReady); //IsReady屬性返回一個布爾值,表示驅動器是否準備就緒
</SCRIPT>
File對象還可以檢測文件屬性,文件創建、最后修改、最后訪問日期,文件大小,文件類型信息等等;Drive對象則可以檢測驅動器空間,文件系統類型,磁盤序列號,磁盤卷標等等。這些屬性不經常應用,在此不再贅述。需要的朋友請與我聯系。
4.Text Stream對象
表3 Text Stream對象的屬性和方法
屬性和方法 說明
AtEndOfLine 屬性 文件指針在行末時為True(行末即下一個字符為新行符)
AtEndOfStream 屬性 文件指針在文件末時為True
Close() 方法 關閉與Text Stream對象相關聯的文件
Column 屬性 返回文件指針的當前列號(行中的字符位置)。第一個字符的列號為1。這是個只讀屬性。
Line 屬性 返回當前行的行號。第一行的行號為1。這是個只讀屬性。
Write() 方法 在當前文件指針位置將指定字符串寫入文件中
WriteLine() 方法 將指定字符串寫入文件中并換行
WriteBlankLines() 方法 將空行寫入文件中
Read() 方法 從文件讀取指定字符數并返回文本
ReadAll() 方法 讀取整個文本文件內容
ReadLine() 方法 讀取文件下一行。這個方法返回讀取的文本行,但不返回新行符。
Skip() 方法 在文件中向前跳過指定的字符數。
SkipLine() 方法 將文件指針移到下一行開頭。
打開文本文件
var ts =fso.OpenTextFile(文件名,參數)
參數:控制文件打開方式的常數值。1為只讀方式,2為寫入方式,8將內容添加到文件末尾。
文件的類型不局限于.txt,任何擴展名都可以,只要其中保存的是文本信息,如.bat,.htm
<script language="JavaScript">
var path ="c:\\yesky.txt";
var fso =new ActiveXObject("Scripting.FileSystemObject");
var exist =fso.FileExists(path);//要打開的文件是否存在
if (!exist) fso.CreateTextFile(path);//如果不存在則創建該文件,訪問根本不存在的文件會出錯
var ts =fso.OpenTextFile(path,2); //以寫的方式打開文本文件
ts.Close(); //關閉文本
</script>
將文本寫入文件
TextStream對象只處理順序文件。如果將文本添加到文件末尾是比較快的操作;而在非最后位置插入時要重寫整個文件,會比較慢。我們通常是一次一行的讀取和寫入文件。
通用步驟:
1. 打開文本文件 2. 寫入內容 3. 關閉文本
例子:
<script language="JavaScript">
var path ="c:\\yesky.txt";
var date =new Date();
var fso =new ActiveXObject("Scripting.FileSystemObject");
var ts =fso.OpenTextFile(path,2); //以寫的方式打開文本文件
ts.WriteLine("電腦報是學習電腦知識的好教材"); //將字符串寫入文本第一行
ts.WriteLine("請訪問天極網 http://www.yesky.com");//將字符串寫入文本第二行
ts.WriteLine(date); //將變量寫入文本
ts.Close(); //關閉文本
</script>
從文件中讀取文本
其過程與寫入類似,這里僅舉例說明相關屬性與方法的使用
<script language="JavaScript">
var path ="c:\\yesky.txt";
var str ="";
var fso =new ActiveXObject("Scripting.FileSystemObject");
var ts =fso.OpenTextFile(path,1); //以只讀的方式打開文本文件
while(!ts.AtEndOfStream){str+=ts.ReadLine()+"\n"};//如果沒有到達文件末尾則逐行讀取文本
alert(str);
ts.Close(); //關閉文本
</script>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -