Board logo

標題: [教學] (ASP教學第12篇) 檔案存取元件 [打印本頁]

作者: 小誌    時間: 2010-5-12 18:52     標題: (ASP教學第12篇) 檔案存取元件

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

檔案操作的方法:
CopyFile 複製檔案,語法如下:
  1. FileSystemObject.copyfile source,destination[,overwrite]
複製代碼

範例程式碼如下:
[attach]312[/attach]
  1. <%
  2. set fs=server.createobject("scripting.filesystemobject")
  3. source=server.mappath("Count.txt")
  4. target=server.mappath("Count1.txt")

  5. on error resume next
  6. fs.copyfile source,target
  7. if err.number=53 then
  8.    response.write source & "檔案不存在"
  9.    response.end
  10. elseif err.number=70 then
  11.    response.write target & "檔案為唯讀檔案或已被鎖定"
  12.    response.end
  13. seif err.number<>0 then
  14.    response.write "其他錯誤,錯誤編號=" & err.number
  15.    response.end
  16. end if
  17. %>
複製代碼
DeleteFile:刪除檔案,語法如下
  1. FileSystemObject.Deletefile Filename[,Flag]
複製代碼

範例程式碼如下:
[attach]313[/attach]
  1. <%
  2. set fs=server.createobject("scripting.filesystemobject")
  3. source=server.mappath("Count.txt")
  4. target=server.mappath("Count1.txt")

  5. on error resume next
  6. fs.deletefile source,target
  7. if err.number=53 then
  8.    response.write source & "檔案不存在"
  9.    response.end
  10. elseif err.number=70 then
  11.    response.write target & "檔案為唯讀檔案或已被鎖定"
  12.    response.end
  13. seif err.number<>0 then
  14.    response.write "其他錯誤,錯誤編號=" & err.number
  15.    response.end
  16. end if
  17. %>
複製代碼
MoveFile 移動檔案或更名,語法如下:
  1. FileSystemObject.Movefile source,destination
複製代碼

範例程式碼如下:
[attach]314[/attach]
  1. <%
  2. set fs=server.createobject("scripting.filesystemobject")
  3. source=server.mappath("Count.txt")
  4. target=server.mappath("Count1.txt")

  5. on error resume next
  6. fs.movefile source,target
  7. if err.number=53 then
  8.    response.write source & "檔案不存在"
  9.    response.end
  10. elseif err.number=70 then
  11.    response.write target & "檔案為唯讀檔案或已被鎖定"
  12.    response.end
  13. seif err.number<>0 then
  14.    response.write "其他錯誤,錯誤編號=" & err.number
  15.    response.end
  16. end if
  17. %>
複製代碼
FileExists 檢驗檔案是否存在,語法如下:
  1. FileSystemObject.FileExists(Filename)
複製代碼
檔案若存在,則傳回值為true,否則傳回false。
作者: 小誌    時間: 2010-5-12 19:02

TextStream 物件
TextStream 物件為FileSystemObject 物件的子物件,建立的方法有兩種。
OpenTextFile 開啟檔案
  1. set fs=server.CreateObject("Scripting.FileSystemObject")
  2. set txt=fs.OpenTextFile(參數...)
複製代碼
 

OpenTextFile所傳的參數如下:  
  1. OpenTextFile(Filename[,IOmode[,Create]])
複製代碼
Filename(檔案名稱)、 IOmode(開啟模式):可以有下列三種設定值

設定值

說明

開啟成為讀的檔案預設值為1

開啟成唯寫的檔案原檔案內容會被清除

開啟成唯寫的檔案原檔案內如保留資料會從檔案最後面寫入


Create(是否自動建檔):預設為false,表開啟的檔案必須是已經 存在的檔案,若設成true,則當所要開啟的檔案不存在時 ,FileSystemObject會自動建立檔案。 其中IOmode與Create參數可省略。


CreateTextFile 建立新檔案
  1. set fs=server.CreateObject("Scripting.FileSystemObject")
  2. set txt=fs.CreateTextFile(參數...)
複製代碼
 


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


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

  5. if not txt.atendofstream then
  6.    line=txt.readline
  7.    response.write line & "<br>"
  8. end if
  9. %>
複製代碼
Read(N):從檔案中讀取N個位元組的資料,如下例:
[attach]315[/attach]
  1. <%
  2. set fs=server.createobject("scripting.filesystemobject")
  3. file=server.mappath("Count.txt")
  4. set txt=fs.opentextfile(file,1,true)

  5. if not txt.atendofstream then
  6.    n=txt.read(10)
  7.    response.write n
  8. end if
  9. %>
複製代碼
ReadAll:讀取檔案中的所有資料,如下例:
[attach]316[/attach]
  1. <%
  2. set fs=server.createobject("scripting.filesystemobject")
  3. file=server.mappath("Count.txt")
  4. set txt=fs.opentextfile(file,1,true)

  5. if not txt.atendofstream then
  6.    all=txt.readall
  7.    alls=replase(all,vbcrlf,"<br>")
  8.    response.write alls
  9. end if
  10. %>
複製代碼
寫入檔案的方法
WriteLine:會在資料後加vbCrLf,才將資料寫到檔案中。
Write:原原本本將資料寫入檔案中,如下例:
[attach]317[/attach]
  1. <%
  2. set fs=server.createobject("scripting.filesystemobject")
  3. file=server.mappath("Count.txt")
  4. set txt=fs.opentextfile(file,2,true)
  5. txt.writeline var
  6. txt.write var
  7. %>
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)