返回列表 上一主題 發帖

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

[教學] (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")
複製代碼
例如:
1.png
2010-5-12 18:44


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

  • source(來源檔案):必須是已存在的檔案,否則會產生『找不到來 源檔案』的錯誤(err.numer=53)。
  • destination(目的檔案):檔案若已存在,則會被覆蓋,若為唯讀屬 性或被鎖定的檔案,則會產生『沒有使用權限』的錯誤(err .number=70)。  
  • overwrite(是否覆蓋):預設值為true,表示存在的檔案將被覆蓋。

範例程式碼如下:
2.png
2010-5-12 18:46
  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]
複製代碼

  • Filename(被刪除的檔案):必須為已存在的檔案,否則會產生『找 不到來源檔』的錯誤(err.number=53)。  
  • Flag(true or false):預設值為false,true表可以刪除唯讀屬性 設定的檔案,若不設為 true,則遇到唯讀屬性檔案時將產 生『沒有使用權限』的錯誤 (err.number=70)。

範例程式碼如下:
3.png
2010-5-12 18:48
  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
複製代碼

  • Source(來源檔案):必須是已存在的檔案,否則會產生『找不到來 源檔』的錯誤(err.numer=53)。
  • Destination(目的檔案):必須是不存在的檔案,否則會產生『 檔 案已存在』的錯誤(err.number=58)。
  • 若source與destination 所在目錄相同,則 MoveFile之 功用是更名,若 source與 destination所在目錄不同,則MoveFile之功用是移動檔案。

範例程式碼如下:
4.png
2010-5-12 18:50
  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。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

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:從檔案中讀取一行資料,如下例:
8.png
2010-5-12 19:04
  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個位元組的資料,如下例:
5.png
2010-5-12 18:57
  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:讀取檔案中的所有資料,如下例:
6.png
2010-5-12 18:59
  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:原原本本將資料寫入檔案中,如下例:
7.png
2010-5-12 18:59
  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. %>
複製代碼
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題