? ? ? ?這個方法可以把整個文件夾打包到xml文件中,把這個xml文件文件和解包文件放在一起后,運行解包文件就可以把原來的文件釋放出來,這樣我們就可以把網站打包上傳到虛擬主機,再運行解包文件就可以了。我在本地測試之選擇了少部分文件,不知在文件很多的情況執行效率如何。
? ? ? ?其實實現的思路也很簡單,主要利用的是xml文件可以存放二進制數據的原理。
解包文件
nbsp;html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
文件打包程序_錯新技術頻道_www.companysz.comDim?ZipPathDir,ZipPathFile
Dim?startime,endtime
'在此更改要打包文件夾的路徑
ZipPathDir?=?"D:/testasp/dictionary/xmlPacked/scrollColor"'
ZipPathFile?=?"update.xml"
if?right(ZipPathDir,1)"/"?then?ZipPathDir=ZipPathDir&"/"
'開始打包
CreateXml(ZipPathFile)
'遍歷目錄內的所有文件以及文件夾
sub?LoadData(DirPath)
????dim?XmlDoc
????dim?fso????????????'fso對象
????dim?objFolder??????'文件夾對象
????dim?objSubFolders??'子文件夾集合
????dim?objSubFolder???'子文件夾對象
????dim?objFiles???????'文件集合
????dim?objFile????????'文件對象
????dim?objStream
????dim?pathname,TextStream,pp,Xfolder,Xfpath,Xfile,Xpath,Xstream
????dim?PathNameStr
????response.Write("=========="&DirPath&"==========
")
????set?fso=server.CreateObject("scripting.filesystemobject")
????set?objFolder=fso.GetFolder(DirPath)'創建文件夾對象
????Response.Write?DirPath
????Response.flush
????Set?XmlDoc?=?Server.CreateObject("Microsoft.XMLDOM")
????XmlDoc.load?Server.MapPath(ZipPathFile)
????XmlDoc.async=false
????'寫入每個文件夾路徑
????set?Xfolder?=?XmlDoc.SelectSingleNode("http://root").AppendChild(XmlDoc.CreateElement("folder"))
????Set?Xfpath?=?Xfolder.AppendChild(XmlDoc.CreateElement("path"))
????????Xfpath.text?=?replace(DirPath,ZipPathDir,"")
????????set?objFiles=objFolder.Files
????????????for?each?objFile?in?objFiles
????????????????if?lcase(DirPath?&?objFile.name)??lcase(Request.ServerVariables("PATH_TRANSLATED"))?then
????????????????????Response.Write?"---
"
????????????????????PathNameStr?=?DirPath?&?""?&?objFile.name
????????????????????Response.Write?PathNameStr?&?""
????????????????????Response.flush
????????????????????'================================================
????????????????????'寫入文件的路徑及文件內容
???????????????????set?Xfile?=?XmlDoc.SelectSingleNode("http://root").AppendChild(XmlDoc.CreateElement("file"))
???????????????????Set?Xpath?=?Xfile.AppendChild(XmlDoc.CreateElement("path"))
???????????????????????Xpath.text?=?replace(PathNameStr,ZipPathDir,"")
???????????????????'創建文件流讀入文件內容,并寫入XML文件中
???????????????????Set?objStream?=?Server.CreateObject("ADODB.Stream")
???????????????????objStream.Type?=?1
???????????????????objStream.Open()
???????????????????objStream.LoadFromFile(PathNameStr)
???????????????????objStream.position?=?0
???????????????????Set?Xstream?=?Xfile.AppendChild(XmlDoc.CreateElement("stream"))
???????????????????????Xstream.SetAttribute?"xmlns:dt","urn:schemas-microsoft-com:datatypes"
???????????????????????'文件內容采用二制方式存放
???????????????????????Xstream.dataType?=?"bin.base64"
???????????????????????Xstream.nodeTypedValue?=?objStream.Read()
???????????????????set?objStream=nothing
???????????????????set?Xpath?=?nothing
???????????????????set?Xstream?=?nothing
???????????????????set?Xfile?=?nothing
??????????????????'================================================
????????????????end?if
????????????next
????Response.Write?"
"
????XmlDoc.Save(Server.Mappath(ZipPathFile))
????set?Xfpath?=?nothing
????set?Xfolder?=?nothing
????set?XmlDoc?=?nothing
????'創建的子文件夾對象
????set?objSubFolders=objFolder.Subfolders
????????'調用遞歸遍歷子文件夾
????????for?each?objSubFolder?in?objSubFolders
????????????pathname?=?DirPath?&?objSubFolder.name?&?"/"
????????????LoadData(pathname)
????????next
????set?objFolder=nothing
????set?objSubFolders=nothing
????set?fso=nothing
end?sub
'創建一個空的XML文件,為寫入文件作準備
sub?CreateXml(FilePath)
????'程序開始執行時間
????startime=timer()
????dim?XmlDoc,Root
????Set?XmlDoc?=?Server.CreateObject("Microsoft.XMLDOM")
????????XmlDoc.async?=?False
????????Set?Root?=?XmlDoc.createProcessingInstruction("xml","version='1.0'?encoding='UTF-8'")
????????XmlDoc.appendChild(Root)
????????XmlDoc.appendChild(XmlDoc.CreateElement("root"))
????????XmlDoc.Save(Server.MapPath(FilePath))
????????Set?Root?=?Nothing
????Set?XmlDoc?=?Nothing
????LoadData(ZipPathDir)
????'程序結束時間
????endtime=timer()
????response.Write("頁面執行時間:"?&?FormatNumber((endtime-startime),3)?&?"秒")
end?sub
%>