麻辣家族討論版版's Archiver

小誌 發表於 2010-5-12 18:52

(ASP教學第12篇) 檔案存取元件

[color=DarkOrange][size=5][b]File Access 物件[/b][/size][/color]
File Access 元件允許ASP程式存取網頁伺服器上的檔案,實務上大 部份以文字檔為主,事實上,File Access元件是由FileSystemObject 物件及TextStream 物件所組成的。 FileSystemObject 物件負責開啟檔案或是目錄的處裡,但若想讀取 檔案內容,則必須配合TextStream 物件一起使用。 File Access元件已包含在IIS4.0中,因此,不需重新安裝此元件就可直接使用。 語法如下所示(fs 是我們自訂的一個元件變數名):[code]set fs=server.CreateObject("Scripting.FileSystemObject")[/code]例如:
[attach]311[/attach]

[color=Green][size=4][b]檔案操作的方法:[/b][/size][/color]
[color=Red]CopyFile 複製檔案,語法如下:[/color][code]FileSystemObject.copyfile source,destination[,overwrite][/code][list]
[*]source(來源檔案):必須是已存在的檔案,否則會產生『找不到來 源檔案』的錯誤(err.numer=53)。
[*]destination(目的檔案):檔案若已存在,則會被覆蓋,若為唯讀屬 性或被鎖定的檔案,則會產生『沒有使用權限』的錯誤(err .number=70)。  
[*]overwrite(是否覆蓋):預設值為true,表示存在的檔案將被覆蓋。
[/list]
範例程式碼如下:
[attach]312[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
source=server.mappath("Count.txt")
target=server.mappath("Count1.txt")

on error resume next
fs.copyfile source,target
if err.number=53 then
   response.write source & "檔案不存在"
   response.end
elseif err.number=70 then
   response.write target & "檔案為唯讀檔案或已被鎖定"
   response.end
seif err.number<>0 then
   response.write "其他錯誤,錯誤編號=" & err.number
   response.end
end if
%>[/code][color=Red]DeleteFile:刪除檔案,語法如下[/color][code]FileSystemObject.Deletefile Filename[,Flag][/code][list]
[*]Filename(被刪除的檔案):必須為已存在的檔案,否則會產生『找 不到來源檔』的錯誤(err.number=53)。  
[*]Flag(true or false):預設值為false,true表可以刪除唯讀屬性 設定的檔案,若不設為 true,則遇到唯讀屬性檔案時將產 生『沒有使用權限』的錯誤 (err.number=70)。
[/list]
範例程式碼如下:
[attach]313[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
source=server.mappath("Count.txt")
target=server.mappath("Count1.txt")

on error resume next
fs.deletefile source,target
if err.number=53 then
   response.write source & "檔案不存在"
   response.end
elseif err.number=70 then
   response.write target & "檔案為唯讀檔案或已被鎖定"
   response.end
seif err.number<>0 then
   response.write "其他錯誤,錯誤編號=" & err.number
   response.end
end if
%>[/code][color=Red]MoveFile 移動檔案或更名,語法如下: [/color][code]FileSystemObject.Movefile source,destination[/code][list]
[*]Source(來源檔案):必須是已存在的檔案,否則會產生『找不到來 源檔』的錯誤(err.numer=53)。
[*]Destination(目的檔案):必須是不存在的檔案,否則會產生『 檔 案已存在』的錯誤(err.number=58)。
[*]若source與destination 所在目錄相同,則 MoveFile之 功用是更名,若 source與 destination所在目錄不同,則MoveFile之功用是移動檔案。
[/list]
範例程式碼如下:
[attach]314[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
source=server.mappath("Count.txt")
target=server.mappath("Count1.txt")

on error resume next
fs.movefile source,target
if err.number=53 then
   response.write source & "檔案不存在"
   response.end
elseif err.number=70 then
   response.write target & "檔案為唯讀檔案或已被鎖定"
   response.end
seif err.number<>0 then
   response.write "其他錯誤,錯誤編號=" & err.number
   response.end
end if
%>[/code][color=Red]FileExists 檢驗檔案是否存在,語法如下:[/color][code]FileSystemObject.FileExists(Filename)[/code]檔案若存在,則傳回值為true,否則傳回false。

小誌 發表於 2010-5-12 19:02

[color=darkorange][size=5][b]TextStream 物件[/b][/size][/color]
TextStream 物件為FileSystemObject 物件的子物件,建立的方法有兩種。
[color=green][size=4][b]OpenTextFile 開啟檔案[/b][/size][/color][code]set fs=server.CreateObject("Scripting.FileSystemObject")
set txt=fs.OpenTextFile(參數...)[/code] 

[color=red]OpenTextFile所傳的參數如下:  [/color][code]OpenTextFile(Filename[,IOmode[,Create]])[/code][color=red]Filename(檔案名稱)、 IOmode(開啟模式):可以有下列三種設定值 [/color]
[table]
[tr][td=1,1,59][p=30, 2, center][font=Courier New][size=2][font=全真中細圓體]設定值[/font][font=全真中細圓體][/font][/size][/font][/p][/td][td=1,1,457][p=30, 2, center][font=全真中細圓體][font=Courier New][size=2]說明[/size][/font][/font][/p][/td][/tr]
[tr][td=1,1,59][p=30, 2, center][font=全真中細圓體][font=Courier New][color=#000000][size=2]1[/size][/color][/font][/font][/p][/td][td=1,1,457][p=30, 2, left][color=#000000][size=2][font=細明體]開啟成為讀的檔案預設值為[/font][font=Courier New]1[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,59][p=30, 2, center][font=全真中細圓體][font=Courier New][color=#000000][size=2]2[/size][/color][/font][/font][/p][/td][td=1,1,457][p=30, 2, left][color=#000000][size=2][font=細明體]開啟成唯寫的檔案原檔案內容會被清除[/font][/size][/color][/p][/td][/tr]
[tr][td=1,1,59][p=30, 2, center][font=全真中細圓體][font=Courier New][color=#000000][size=2]8[/size][/color][/font][/font][/p][/td][td=1,1,457][p=30, 2, left][font=細明體][size=2][color=#000000]開啟成唯寫的檔案原檔案內如保留資料會從檔案最後面寫入[/color][/size][/font][font=全真中細圓體][/font][/p][/td][/tr]
[/table]
Create(是否自動建檔):預設為false,表開啟的檔案必須是已經 存在的檔案,若設成true,則當所要開啟的檔案不存在時 ,FileSystemObject會自動建立檔案。 其中IOmode與Create參數可省略。


[color=Green][size=4][b]CreateTextFile 建立新檔案 [/b][/size][/color][code]set fs=server.CreateObject("Scripting.FileSystemObject")
set txt=fs.CreateTextFile(參數...)[/code] 


[color=Red]CreateTextFile所傳的參數如下:[/color][code]CreateTextFile(Filename[,Overwrite])[/code]OverWrite(是否覆寫原檔案):需建立在檔案已存在的情況下,此 參數才有效。若設為 true(預設),則原檔案會被覆寫,若 設為false,則會出現『檔案已存在』的錯誤。


[color=Green][size=4][b]讀取檔案的方法 [/b][/size][/color]
[color=Red]ReadLine:[/color]從檔案中讀取一行資料,如下例:
[attach]318[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
file=server.mappath("Count.txt")
set txt=fs.opentextfile(file,1,true)

if not txt.atendofstream then
   line=txt.readline
   response.write line & "<br>"
end if
%>[/code][color=Red]Read(N):[/color]從檔案中讀取N個位元組的資料,如下例:
[attach]315[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
file=server.mappath("Count.txt")
set txt=fs.opentextfile(file,1,true)

if not txt.atendofstream then
   n=txt.read(10)
   response.write n
end if
%>[/code][color=Red]ReadAll:[/color]讀取檔案中的所有資料,如下例:
[attach]316[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
file=server.mappath("Count.txt")
set txt=fs.opentextfile(file,1,true)

if not txt.atendofstream then
   all=txt.readall
   alls=replase(all,vbcrlf,"<br>")
   response.write alls
end if
%>[/code][color=Green][size=4][b]寫入檔案的方法 [/b][/size][/color]
[color=Red]WriteLine:[/color]會在資料後加vbCrLf,才將資料寫到檔案中。
[color=Red]Write:[/color]原原本本將資料寫入檔案中,如下例:
[attach]317[/attach][code]<%
set fs=server.createobject("scripting.filesystemobject")
file=server.mappath("Count.txt")
set txt=fs.opentextfile(file,2,true)
txt.writeline var
txt.write var
%>[/code]

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供