標題:
[教學]
(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 是我們自訂的一個元件變數名):
set fs=server.CreateObject("Scripting.FileSystemObject")
複製代碼
例如:
[attach]311[/attach]
檔案操作的方法:
CopyFile 複製檔案,語法如下:
FileSystemObject.copyfile source,destination[,overwrite]
複製代碼
source(來源檔案):必須是已存在的檔案,否則會產生『找不到來 源檔案』的錯誤(err.numer=53)。
destination(目的檔案):檔案若已存在,則會被覆蓋,若為唯讀屬 性或被鎖定的檔案,則會產生『沒有使用權限』的錯誤(err .number=70)。
overwrite(是否覆蓋):預設值為true,表示存在的檔案將被覆蓋。
範例程式碼如下:
[attach]312[/attach]
<%
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
%>
複製代碼
DeleteFile:刪除檔案,語法如下
FileSystemObject.Deletefile Filename[,Flag]
複製代碼
Filename(被刪除的檔案):必須為已存在的檔案,否則會產生『找 不到來源檔』的錯誤(err.number=53)。
Flag(true or false):預設值為false,true表可以刪除唯讀屬性 設定的檔案,若不設為 true,則遇到唯讀屬性檔案時將產 生『沒有使用權限』的錯誤 (err.number=70)。
範例程式碼如下:
[attach]313[/attach]
<%
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
%>
複製代碼
MoveFile 移動檔案或更名,語法如下:
FileSystemObject.Movefile source,destination
複製代碼
Source(來源檔案):必須是已存在的檔案,否則會產生『找不到來 源檔』的錯誤(err.numer=53)。
Destination(目的檔案):必須是不存在的檔案,否則會產生『 檔 案已存在』的錯誤(err.number=58)。
若source與destination 所在目錄相同,則 MoveFile之 功用是更名,若 source與 destination所在目錄不同,則MoveFile之功用是移動檔案。
範例程式碼如下:
[attach]314[/attach]
<%
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
%>
複製代碼
FileExists 檢驗檔案是否存在,語法如下:
FileSystemObject.FileExists(Filename)
複製代碼
檔案若存在,則傳回值為true,否則傳回false。
作者:
小誌
時間:
2010-5-12 19:02
TextStream 物件
TextStream 物件為FileSystemObject 物件的子物件,建立的方法有兩種。
OpenTextFile 開啟檔案
set fs=server.CreateObject("Scripting.FileSystemObject")
set txt=fs.OpenTextFile(參數...)
複製代碼
OpenTextFile所傳的參數如下:
OpenTextFile(Filename[,IOmode[,Create]])
複製代碼
Filename(檔案名稱)、 IOmode(開啟模式):可以有下列三種設定值
設定值
說明
1
開啟成為讀的檔案預設值為
1
2
開啟成唯寫的檔案原檔案內容會被清除
8
開啟成唯寫的檔案原檔案內如保留資料會從檔案最後面寫入
Create(是否自動建檔):預設為false,表開啟的檔案必須是已經 存在的檔案,若設成true,則當所要開啟的檔案不存在時 ,FileSystemObject會自動建立檔案。 其中IOmode與Create參數可省略。
CreateTextFile 建立新檔案
set fs=server.CreateObject("Scripting.FileSystemObject")
set txt=fs.CreateTextFile(參數...)
複製代碼
CreateTextFile所傳的參數如下:
CreateTextFile(Filename[,Overwrite])
複製代碼
OverWrite(是否覆寫原檔案):需建立在檔案已存在的情況下,此 參數才有效。若設為 true(預設),則原檔案會被覆寫,若 設為false,則會出現『檔案已存在』的錯誤。
讀取檔案的方法
ReadLine:
從檔案中讀取一行資料,如下例:
[attach]318[/attach]
<%
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
%>
複製代碼
Read(N):
從檔案中讀取N個位元組的資料,如下例:
[attach]315[/attach]
<%
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
%>
複製代碼
ReadAll:
讀取檔案中的所有資料,如下例:
[attach]316[/attach]
<%
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
%>
複製代碼
寫入檔案的方法
WriteLine:
會在資料後加vbCrLf,才將資料寫到檔案中。
Write:
原原本本將資料寫入檔案中,如下例:
[attach]317[/attach]
<%
set fs=server.createobject("scripting.filesystemobject")
file=server.mappath("Count.txt")
set txt=fs.opentextfile(file,2,true)
txt.writeline var
txt.write var
%>
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)