直播中
Attributes
返回文件夾的屬性??梢允窍铝兄抵械囊粋€(gè)或其組合:Normal(0)、ReadOnly(1)、Hidden(2)、System(4)、Volume(名稱)(8)、Directory(文件夾)(16)、Archive(32)、Alias(64)和Compressed(128)。例如,一個(gè)隱藏的只讀文件,Attributes的值為3
DateCreated
返回該文件夾的創(chuàng)建日期和時(shí)間
DateLastAccessed
返回最后一次訪問(wèn)該文件夾的日期和時(shí)間
DateLastModified
返回最后一次修改該文件夾的日期和時(shí)間
Drive
返回該文件夾所在的驅(qū)動(dòng)器的驅(qū)動(dòng)器字母
Files
返回Folder對(duì)象包含的Files集合,表示該文件夾內(nèi)所有的文件
IsRootFolder
返回一個(gè)布爾值說(shuō)明該文件夾是否是當(dāng)前驅(qū)動(dòng)器的根文件夾
Name
設(shè)定或返回文件夾的名字
ParentFolder
返回該文件夾的父文件夾對(duì)應(yīng)的Folder對(duì)象
Path
返回文件夾的絕對(duì)路徑,使用相應(yīng)的長(zhǎng)文件名
ShortName
返回DOS風(fēng)格的8.3形式的文件夾名
ShortPath
返回DOS風(fēng)格的8.3形式的文件夾的絕對(duì)路徑
Size
返回包含在該文件夾里所有文件和子文件夾的大小
SubFolers
返回該文件夾內(nèi)包含的所有子文件夾對(duì)應(yīng)的Folders集合,包括隱藏文件夾和系統(tǒng)文件夾
Type
如果可能,返回一個(gè)文件夾的說(shuō)明字符串(例如,“Recycle Bin”)
(2) Folder對(duì)象的方法
Folder對(duì)象提供一組可用于復(fù)制、刪除和移動(dòng)當(dāng)前文件夾的方法。這些方法的運(yùn)行方式與FileSystemObject對(duì)象的CopyFolder、DeleFolder和MoveFolder方法相同,但這些方法不要求source參數(shù),因?yàn)樵次募褪沁@個(gè)文件夾。這些方法及說(shuō)明如表5-10所示:
表5-10 Folder對(duì)象的方法及說(shuō)明
方 法
說(shuō) 明
Copy(destination,overwrite)
將這個(gè)文件夾及所有的內(nèi)容復(fù)制到destination指定的文件夾。如果destination的末尾是路徑分隔符(‘\’),那么認(rèn)為destination是放置拷貝文件夾的一個(gè)文件夾。否則認(rèn)為destination是要?jiǎng)?chuàng)建的新文件夾的路徑和名字。如果目標(biāo)文件夾已經(jīng)存在且overwrite參數(shù)設(shè)置為False,將產(chǎn)生錯(cuò)誤,缺省的overwrite參數(shù)是True
Delete(force)
刪除文件夾及里面的所有內(nèi)容。如果可選的force參數(shù)設(shè)置為T(mén)rue,即使文件夾設(shè)置為只讀或含有只讀的文件,也將刪除該文件夾。缺省的force是False
Move(destination)
將文件夾及里面所有的內(nèi)容移動(dòng)到destination指定的文件夾。如果destination的末尾是路徑分隔符(‘\’),那么認(rèn)為destination是放置移動(dòng)文件夾的一個(gè)文件夾。否則認(rèn)為destination是一個(gè)新的文件夾的路徑和名字。如果目標(biāo)文件夾已經(jīng)存在,則出錯(cuò)
CreateTextFile
(filename,overwrite,unicode)
用指定的文件名在文件夾內(nèi)創(chuàng)建一個(gè)新的文本文件,并且返回一個(gè)相應(yīng)的TextStream對(duì)象。如果可選的overwrite參數(shù)設(shè)置為T(mén)rue,將覆蓋任何已有的同名文件。缺省的overwrite參數(shù)是False。如果可選的unicode參數(shù)設(shè)置為T(mén)rue,文件的內(nèi)容將存儲(chǔ)為unicode文本。缺省的unicode是False
在文件夾之間可以使用當(dāng)前文件夾的ParentFolder屬性,返回到父目錄。當(dāng)?shù)竭_(dá)一個(gè)文件夾時(shí),如果IsRootFolder屬性是True,就停下來(lái)。離開(kāi)驅(qū)動(dòng)器的根目錄,沿目錄樹(shù)向下,可遍歷或訪問(wèn)在Folders集合(由當(dāng)前文件夾的SubFolders屬性返回)內(nèi)的指定文件夾。
下列程序遍歷了驅(qū)動(dòng)器C根目錄內(nèi)的所有文件夾,并顯示各個(gè)文件夾的有關(guān)信息。
VBScript程序如下:
'In VBScript:
' Create a FileSystemObject instance
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' Get a reference to drive C
Set objDriveC = objFSO.GetDrive("C:")
' Get a reference to the root folder
Set objRoot = objDriveC.RootFolder
' Get a reference to the SubFolders collection
Set objFolders = objRoot.SubFolders
' Get a reference to the first folder in the SubFolders collection
For Each objFolder In objFolders
Set objFolder1 = objFolders.Item((objFolder.Name))
Exit For
Next
' Iterate through all the files in this folder
For Each objFile in objFolder1.Files
Response.Write "Name: " & objFile.Name & " "
Response.Write "ShortName: " & objFile.ShortName & " "
Response.Write "Size: " & objFile.Size & " bytes "
Response.Write "Type: " & objFile.Type & "<BR>"
Response.Write "Path: " & objFile.Path & " "
Response.Write "ShortPath: " & objFile.ShortPath & "<BR>"
Response.Write "Created: " & objFile.DateCreated & " "
Response.Write "LastModified: " & objFile.DateLastModified & "<P>"
Next
JScript程序如下:
//In JScript:
// Create a FileSystemObject instance
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
// Get a reference to drive C
var objDriveC = objFSO.GetDrive('C:');
// Get a reference to the root folder
var objRoot = objDriveC.RootFolder;
// Get a reference to the first folder in the SubFolders collection
var colAllFolders = new Enumerator(objRoot.SubFolders);
var objFolder1 = colAllFolders.item();
// Get a reference to the Files collection for this folder
var colFiles = new Enumerator(objFolder1.Files);
// Iterate through all the files in this collection
for (; !colFiles.atEnd(); colFiles.moveNext()) {
objFile = colFiles.item()
Response.Write('Name: ' + objFile.Name + ' ');
Response.Write('ShortName: ' + objFile.ShortName + ' ');
Response.Write('Size: ' + objFile.Size + ' bytes ');
Response.Write('Type: ' + objFile.Type + '<BR>');
Response.Write('Path: ' + objFile.Path + ' ');
Response.Write('ShortPath: ' + objFile.ShortPath + '<BR>');
Response.Write('Created: ' + objFile.DateCreated + ' ');
Response.Write('Accessed: ' + objFile.DateLastAccessed + ' ');
Response.Write('Modified: ' + objFile.DateLastModified + '<P>');
}
該VBScript程序在服務(wù)器上運(yùn)行時(shí)的結(jié)果如圖5-12所示。該頁(yè)面為folderscollection_vb.asp,來(lái)自本書(shū)提供的示例文件。
圖5-12 Folders集合的內(nèi)容
(3) 使用特殊文件夾
GetSpecialFolder是FileSystemObject對(duì)象的方法之一,它返回計(jì)算機(jī)上三個(gè)“特殊文件夾”對(duì)應(yīng)的Folder對(duì)象:
· WindowsFolder:%Windows%目錄,缺省為WinNT(或Windows,在非NT/2000計(jì)算機(jī)上)目錄。
· SystemFolder:%System%目錄,缺省為WinNT\System32(或Windows\System,在非NT/2000計(jì)算機(jī)上)目錄。
· TemporaryFolder:%Temp%目錄,缺省為WinNT\Temp(或Windows\Temp,在非NT/2000計(jì)算機(jī)上)目錄。
為得到對(duì)特殊文件夾的引用,我們提供相應(yīng)的預(yù)定義常數(shù)作為GetSpecialFolder方法的參數(shù):
' In VBScript:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetSpecialFolder(WindowsFolder)
Response.Write "GetSpecialFolder(WindowsFolder) returned:<BR>"
Response.Write "Path: " & objFolder.Path & "<BR>"
Response.Write "Type: " & objFolder.Type & "<P>"
Set objFolder = objFSO.GetSpecialFolder(SystemFolder)
Response.Write "GetSpecialFolder(SystemFolder) returned:<BR>"
Response.Write "Path: " & objFolder.Path & "<BR>"
Response.Write "Type: " & objFolder.Type & "<P>"
Set objFolder = objFSO.GetSpecialFolder(TemporaryFolder)
Response.Write "GetSpecialFolder(TemporaryFolder) returned:<BR>"
Response.Write "Path: " & objFolder.Path & "<BR>"
Response.Write "Type: " & objFolder.Type & "<P>"
或用JScript:
// In JScript:
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
var objFolder = objFSO.GetSpecialFolder(WindowsFolder);
Response.Write('GetSpecialFolder(WindowsFolder) returned - ');
Response.Write('Path: ' + objFolder.Path + ' ');
Response.Write('Type: ' + objFolder.Type + '<BR>');
var objFolder = objFSO.GetSpecialFolder(SystemFolder);
Response.Write('GetSpecialFolder(SystemFolder) returned - ');
Response.Write('Path: ' + objFolder.Path + ' ');
Response.Write('Type: ' + objFolder.Type + '<BR>');
var objFolder = objFSO.GetSpecialFolder(TemporaryFolder);
Response.Write('GetSpecialFolder(TemporaryFolder) returned - ');
Response.Write('Path: ' + objFolder.Path + ' ');
Response.Write('Type: ' + objFolder.Type + '<BR>');
該VBScript程序在服務(wù)器上運(yùn)行時(shí)的結(jié)果如圖5-13所示。該頁(yè)面名為specialfolder_vb.asp,來(lái)自本書(shū)提供的示例文件。
圖5-13 GetSpecialFolder方法的使用結(jié)果
2. File對(duì)象
File對(duì)象提供了對(duì)文件的屬性的訪問(wèn),通過(guò)它的方法能夠?qū)ξ募M(jìn)行操作。每個(gè)Folder對(duì)象提供了一個(gè)Files集合,包含文件夾中文件對(duì)應(yīng)的File對(duì)象。還可以直接地從FileSystemObject對(duì)象中通過(guò)使用GetFile方法得到一個(gè)File對(duì)象引用。
(1) File對(duì)象的屬性
File對(duì)象有一系列的屬性,類似于Folder對(duì)象的屬性,如表5-11所示:
表5-11 File對(duì)象的屬性及說(shuō)明
屬 性
說(shuō) 明
Attributes
返回文件的屬性??梢允窍铝兄抵械囊粋€(gè)或其組合:Normal(0)、ReadOnly(1)、Hidden(2)、System(4)、Volume(名稱)(9)、Directory(文件夾)(16)、Archive(32)、Alias(64)和Compressed(128)
DateCreated
返回該文件夾的創(chuàng)建日期和時(shí)間
DateLastAccessed
返回最后一次訪問(wèn)該文件的日期和時(shí)間
DateLastModified
返回最后一次修改該文件的日期和時(shí)間
Drive
返回該文件所在的驅(qū)動(dòng)器的Drive對(duì)象
Name
設(shè)定或返回文件的名字
ParentFolder
返回該文件的父文件夾的Folder對(duì)象
Path
返回文件的絕對(duì)路徑,可使用長(zhǎng)文件名
ShortName
返回DOS風(fēng)格的8.3形式的文件名
ShortPath
返回DOS風(fēng)格的8.3形式的文件絕對(duì)路徑
Size
返回該文件的大小(字節(jié))
Type
如果可能,返回一個(gè)文件類型的說(shuō)明字符串(例如:“Text Document”表示.txt文件)
(2) File對(duì)象的方法
同樣類似于Folder對(duì)象,F(xiàn)ile對(duì)象的方法允許復(fù)制、刪除以及移動(dòng)文件。它也有一個(gè)使用文本流打開(kāi)文件的方法。File對(duì)象的方法及說(shuō)明如表5-12所示:
表5-12 File對(duì)象的方法及說(shuō)明
方 法
說(shuō) 明
Copy(destination,overwrite)
將這個(gè)文件復(fù)制到destination指定的文件夾。如果destination的末尾是路徑分隔符(‘\’),那么認(rèn)為destination是放置拷貝文件的文件夾。否則認(rèn)為destination是要?jiǎng)?chuàng)建的新文件的路徑和名字。如果目標(biāo)文件已經(jīng)存在且overwrite參數(shù)設(shè)置為False,將產(chǎn)生錯(cuò)誤,缺省的overwrite參數(shù)是True
Delete(force)
刪除這個(gè)文件。如果可選的force參數(shù)設(shè)置為T(mén)rue,即使文件具有只讀屬性也會(huì)被刪除。缺省的force是False
Move(destination)
將文件移動(dòng)到destination指定的文件夾。如果destination的末尾是路徑分隔符(‘\’),那么認(rèn)為destination是一文件夾。否則認(rèn)為destination是一個(gè)新的文件的路徑和名字。如果目標(biāo)文件夾已經(jīng)存在,則出錯(cuò)
CreateTextFile
(filename,overwrite,unicode)
用指定的文件名創(chuàng)建一個(gè)新的文本文件,并且返回一個(gè)相應(yīng)的TextStream對(duì)象。如果可選的overwrite參數(shù)設(shè)置為T(mén)rue,將覆蓋任何已有的同名文件。缺省的overwrite參數(shù)是False。如果可選的unicode參數(shù)設(shè)置為T(mén)rue,文件的內(nèi)容將存儲(chǔ)為unicode文本。缺省的unicode是False
OpenAsTextStream
(iomode,format)
打開(kāi)指定文件并且返回一個(gè)TextStream對(duì)象,用于文件的讀、寫(xiě)或追加。iomode參數(shù)指定了要求的訪問(wèn)類型,允許值是ForReading(1) (缺省值)、ForWrite(2)、ForAppending(8)。format參數(shù)說(shuō)明了讀、寫(xiě)文件的數(shù)據(jù)格式。允許值是TristateFalse(0)(缺?。f(shuō)明用ASCII數(shù)據(jù)格式;TristateTrue(-1)說(shuō)明用Unicode數(shù)據(jù)格式;TristateUseDefault(-2)說(shuō)明使用系統(tǒng)缺省格式
因此給定一個(gè)File對(duì)象后,可以使用ParentFolder屬性得到包含該文件的Folder對(duì)象的引用,用來(lái)在文件系統(tǒng)中導(dǎo)航。甚至可以用Drive屬性獲得相應(yīng)的Drive對(duì)象的引用,并得到各種Folder對(duì)象以及所包含的File對(duì)象。
另外,給定一個(gè)Folder對(duì)象以及對(duì)應(yīng)的Files集合后,可以通過(guò)遍歷該集合檢查這一文件夾中的每個(gè)文件。還可以使用File對(duì)象的各種方法以一定方式處理該文件,如復(fù)制、移動(dòng)或刪除。下面的代碼給出了C驅(qū)動(dòng)器的第一個(gè)文件夾的文件列表:
' In VBScript:
' Create a FileSystemObject instance
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' Get a reference to drive C
Set objDriveC = objFSO.GetDrive("C:")
' Get a reference to the root folder
Set objRoot = objDriveC.RootFolder
' Get a reference to the SubFolders collection
Set objFolders = objRoot.SubFolders
' Get a reference to the first folder in the SubFolders collection
For Each objFolder In objFolders
Set objFolder1 = objFolders.Item((objFolder.Name))
Exit For
Next
' Iterate through all the files in this folder
For Each objFile in objFolder1.Files
Response.Write "Name: " & objFile.Name & " "
Response.Write "ShortName: " & objFile.ShortName & " "
Response.Write "Size: " & objFile.Size & " bytes "
Response.Write "Type: " & objFile.Type & "<BR>"
Response.Write "Path: " & objFile.Path & " "
Response.Write "ShortPath: " & objFile.ShortPath & "<BR>"
Response.Write "Created: " & objFile.DateCreated & " "
Response.Write "LastModified: " & objFile.DateLastModified & "<P>"
Next
注意,不能使用數(shù)字索引來(lái)定位Folders或Files集合里的條目,因此必須使用For Each … Next語(yǔ)句遍歷該集合直到最初的條目,然后使用該條目的Name屬性。也不得不使用嵌套的圓括號(hào)強(qiáng)迫其作為值(字符串)傳送給該Folders集合的Item方法。
用下面的JScript程序可完成同樣的工作:
// In JScript:
// Create a FileSystemObject instance
var objFSO = Server.CreateObject('Scripting.FileSystemObject');
// Get a reference to drive C
var objDriveC = objFSO.GetDrive('C:');
// Get a reference to the root folder
var objRoot = objDriveC.RootFolder;
// Get a reference to the first folder in the SubFolders collection
var colAllFolders = new Enumerator(objRoot.SubFolders);
var objFolder1 = colAllFolders.item();
// Get a reference to the Files collection for this folder
var colFiles = new Enumerator(objFolder1.Files);
// Iterate through all the files in this collection
for (; !colFiles.atEnd(); colFiles.moveNext()) {
objFile = colFiles.item()
Response.Write('Name: ' + objFile.Name + ' ');
Response.Write('ShortName: ' + objFile.ShortName + ' ');
Response.Write('Size: ' + objFile.Size + ' bytes ');
Response.Write('Type: ' + objFile.Type + '<BR>');
Response.Write('Path: ' + objFile.Path + ' ');
Response.Write('ShortPath: ' + objFile.ShortPath + '<BR>');
Response.Write('Created: ' + objFile.DateCreated + ' ');
Response.Write('Accessed: ' + objFile.DateLastAccessed + ' ');
Response.Write('Modified: ' + objFile.DateLastModified + '<P>');
}
兩個(gè)程序的結(jié)果是相同的,如圖5-14所示。該頁(yè)面為filescollection_vb.asp,來(lái)自本書(shū)提供的示例文件。
圖5-14 File集合的內(nèi)容
5.5 Scripting.TextStream對(duì)象
FileSystemObject、Folder和File對(duì)象的一些方法都與通過(guò)TextStream對(duì)象創(chuàng)建、讀取或?qū)懭胛募嘘P(guān)。
雖然TextStream對(duì)象定義為FileSystemObject對(duì)象的一個(gè)獨(dú)立的附屬對(duì)象,但我們不得不使用FileSystemObject對(duì)象或其附屬對(duì)象來(lái)創(chuàng)建一個(gè)TextStream對(duì)象并訪問(wèn)磁盤(pán)文件的內(nèi)容。