在這篇文章中,我們將講解利用FSO對象模型的TextStream對象對文本文件的操作。
(一) 用 FileSystemObject 來獲取文本文件對象
1.創(chuàng)建一個 FileSystemObject 對象實例
要進行文件操作,首先必須創(chuàng)建一個 FileSystemObject 對象實例,用來創(chuàng)建或打開一個文件.創(chuàng)建一個 FileSystemObject 對象實例的具體格式為(以AFileSystemObject)為例:
Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct")
2.用 FileSystemObject 來獲取文本文件對象TextStream
FileSystemObject 提供了兩種方法用于獲取文本文件對象 TextStream,其中用于創(chuàng)建
文件的是 CreateTextFile,用于打開已存在文件的是 OpenTextFile,兩種方法的返回結(jié)果都是
一個 TextStream 對象的實例,利用該對象可以進行文件的具體操作.
⑴ 創(chuàng)建一個新文件
創(chuàng)建新文件的方法的具體格式為(以AFileSystemObject為例):
AFilesystemObject.CreateTextFile(NewFileName,OverwriteExistingFile,IsUnicode)
其中:
NewFileName 是一個string值,指定要建立的文件的名稱,通常為文件的實際路徑
加文件名稱,如C:\webshare\aspsamp\filetest.txt
OverwriteExistingFile 是一個Boolean值,表示如果有同名文件存在時是否覆蓋
原來的文件.該參數(shù)可以省略,缺省時為False,即不覆蓋原來文件.
IsUnicode 是一個Boolean值,表示要建立的文件是ASCII文件還是Unicode文件,
該參數(shù)可以省略,缺省時為False,即為ASCII文件.
⑵ 打開已存在的文件
打開已存在文件的方法的具體格式為(以AFileSystemObject為例):
AFilesystemObject.OpenTextFile(FileName,IOMode,create,format)
其中:
FileName 是一個string值,指定要打開的文件的名稱,通常為文件的實際路徑
加文件名稱,C:\filepath\test.txt
IOMode 是常數(shù)值,表示打開文件的目的,F(xiàn)orReading(1)表示用于讀取數(shù)據(jù);
ForAppending表示用于增加數(shù)據(jù).該參數(shù)可以省略,缺省時為ForReading.
Create 是一個Boolean值,表示要打開的文件不存在時是否創(chuàng)建新文件,
該參數(shù)可以省略,缺省時為False,即不創(chuàng)建新文件.
Format 表示文件打開的方式.其可能的值及含義如下:
TristateTrue : 以 Unicode 的方式打開.
TristateFalse : 以 ASCII 的方式打開.
TristateUseDefault : 以系統(tǒng)默認的方式打開.
該參數(shù)可以省略,缺省時為 TristateFalse ,即ASCII方式.
(二).用 TextStream 進行文件操作
在建立或打開了文件之后,就可利用對象 TextStream 提供的方法進行文件的實際操作了.
1.用于寫操作的方法有:
⑴ Write(string)
將由string指定的字符串寫入到文件中.
⑵ WriteLine(string)
在文件中寫入由string指定的字符串,并寫入一個換行字符.
參數(shù)string可以省略,此時將在文件中插入一個空行.
⑶ WriteBlankLines(NumOfLines)
在文件中插入若干空行,行數(shù)由 NumOfLines 指定.
2.用于讀操作的方法和屬性方法有:
⑴ AtEndOfLine
該屬性是一個Boolean值,表示文件指針是否已指向當前行的行尾.
⑵ AtEndOfStream
該屬性是一個Boolean值,表示文件指針是否已指向文件尾.
⑶ Column
該屬性是一個整數(shù)值,表示文件指針在當前行中的位置.
⑷ Line
該屬性是一個整數(shù)值,表示文件指針所在行的行號.
⑸ Read(NumOfCharacters)
該方法從文件當前位置開始,讀入由NumOfCharacters數(shù)目指定的若干字符,返回一個
字符串.
⑹ ReadLine
該方法從文件當前位置開始,讀入當前行的內(nèi)容直到行尾,返回一個字符串.
⑺ ReadAll
該方法從當前位置開始,讀入整個文件的內(nèi)容直到文件結(jié)束,返回一個字符串.
⑻ Skip(NumOfCharacters)
該方法從文件當前位置開始,跳過由NumOfCharacters數(shù)目指定的若干字符.
⑼ SKipLine
該方法從文件當前位置開始,跳過當前行的內(nèi)容.
3.用于關(guān)閉文件的方法有:
⑴ Close
關(guān)閉已經(jīng)建立或打開的文件.
(三)、下面就以一個實例來說明如何使用FSO來讀取文本文件和如何保存到數(shù)據(jù)庫:
1、 先創(chuàng)建一個讀取文件路徑的頁面:file.htm
…
<FORM METHOD=POST ACTION="upFile.asp" >
<div align="center"> <br>
<br>
<br>
<br>
<input type="file" name="path" size="40">
<INPUT TYPE="submit" name="dr" value="導入信息">
</div>
</FORM>
…
2、 編寫把獲取到的文本值保存到數(shù)據(jù)庫代碼:upFile.asp
<%@Language="VBScript"%>
<%Response.Buffer=true%>
<!--#include file="adovbs.inc"-->
<%
strConn="DSN=DataSourceName"
set Conn=Server.CreateObject("ADODB.Connection")
Conn.open strConn
set ObjComm=Server.CreateObject("ADODB.Command")
ObjComm.CommandText="sp_AddMsg" ‘調(diào)用存儲過程
ObjComm.CommandType=adCmdStoredProc
Set ObjComm.ActiveConnection=Conn
''''''''''創(chuàng)建輸入輸出參數(shù)'''''''''''''''''
Set ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)
ObjComm.Parameters.Append ObjParamECom
'@in_ECompanyName Varchar(50), --公司英文名稱
Set ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)
ObjComm.Parameters.Append ObjParamAddr
'@in_Address Varchar(50), --公司地址
Set ObjParamCity=ObjComm.CreateParameter("WC_City",adVarchar,adParamInput,100)
ObjComm.Parameters.Append ObjParamCity
'@in_City Varchar(50), --城市
…
''''''''''創(chuàng)建參數(shù)完畢''''''''''''''''''''
%>
<%
dim AllText,strLine1,strLine2,strLine3
dim strpath,fileurl
fileurl=""
strpath=Trim(Request.form("path"))
fileurl=strpath
SET FSO=CreateObject("Scripting.FileSystemObject")
SET ATextStream=FSO.OpenTextFile(fileurl,1,false,TristateFalse)
'''''''''提取數(shù)據(jù)''''''''''''''''''''''''''''
DO WHILE NOT ATextStream.AtEndOfStream
''''''初始化變量''''''''''''''''
strLine1=""
strLine2=""
strLine3=""
…
'''''''''''''''''''''''''''''''
ATextStream.SkipLine
ATextStream.Skip(11)
strLine1=Trim(ATextStream.ReadLine)
ATextStream.Skip(11)
strLine2=Trim(ATextStream.ReadLine)
ATextStream.Skip(5)
strLine3=Trim(ATextStream.ReadLine)
…
'End if
''''''''''將變量加入?yún)?shù)集'''''''''''''
ObjParamECom.value=strLine1
ObjParamCCom.value=strLine2
ObjParamAddr.value=strLine3
…
''''''''''操作結(jié)束''''''''''''''''''''
ObjComm.Execute() '運行命令
LOOP
response.write "<br>"+"導入庫成功!<a href=dolist.html>[繼續(xù)導入]</a><br>"
set Conn=nothing
set FSO=nothing
set ATextStream=nothing
%>
附:存儲過程sp_AddMsg代碼
CREATE PROCEDURE dbo.sp_AddMsg --導入國外企業(yè)信息
(
@in_CompanyName Varchar(100), --公司名稱
@in_Address Varchar(200), --公司地址
@in_City Varchar(100), --公司所在城市
…
)
AS
SET NOCOUNT ON
BEGIN TRAN
INSERT INTO Tb_WCLibrary(
WC_CompanyName,
WC_CCompanyName,
WC_Address,
…
)
VALUES(
@in_CompanyName,
@in_CCompanyName,
@in_Address,
…
)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN -1
END
COMMIT TRAN
RETURN 0
SET NOCOUNT OFF
至此,全文內(nèi)容講解結(jié)束,希望這篇文章能給讀者帶來一定的幫助。
相關(guān)文章