630 likes | 836 Views
第 6 章 ASP 文件处理. 6.1 FileSystemObject 对象 6.2 读写文件数据 6.3 文件操作 6.4 驱动器操作 6.5 文件夹操作. 学习目标. 介绍了与文件和文件夹处理有关的基本对象,使读者能够灵活地进行文件和文件夹的创建、复制、删除、移动等基本操作,实现以下目标。 了解 ASP 的 FileSystemObject 对象 熟悉 FileSystemObject 对象的基本方法 掌握使用 TextStream 对象对文本文件的写入和读取 掌握 File 对象、 Folder 对象和 Drive 对象的使用.
E N D
第6章 ASP文件处理 6.1 FileSystemObject对象 6.2 读写文件数据 6.3 文件操作 6.4 驱动器操作 6.5 文件夹操作
学习目标 • 介绍了与文件和文件夹处理有关的基本对象,使读者能够灵活地进行文件和文件夹的创建、复制、删除、移动等基本操作,实现以下目标。 • 了解ASP的FileSystemObject对象 • 熟悉FileSystemObject对象的基本方法 • 掌握使用TextStream对象对文本文件的写入和读取 • 掌握File对象、Folder对象和Drive对象的使用
文件存取组件 文件存取组件,可以实现对文本文件的存取,文件和文件夹的复制、移动和删除等操作。 文件存取组件包含多个对象,常用对象如 下: 注意:对文件和文件夹操作时,要注意权限问题。
6.1 FileSystemObject对象 • FileSystemObject是ASP文件处理组件中的核心对象,使用FileSystemObject对象的相关方法可以获取TextStream对象、File对象、Folder对象以及Drive对象的实例。因此,也可以将这4个对象称作为FileSystemObject对象的子对象或者从属对象。 • 它不仅可以对文件和文件夹进行新建、复制、移动、删除等操作。而且可以建立TextStream、File、Folder和Drive对象. • 该对象的语法为: • Set FileSystem对象实例= Server.CreateObject("Scripting.FileSystemObject") • <% Set fso=Server.CreateObject("Scripting.FileSystemObject") %>
FileSystemObject对象的属性和方法 属性: 它的常用属性只有Drives,它用来返回硬盘上的驱动器对象的集合。 例如 <% Set objsA=fso.Drives %> 方法大致可以分为三部分 分别是关于文件、文件夹和驱动器的属性 ,如下图:
6.2 读写文件数据 • 文件数据的读和写是通过FileSystemObject对象的子对象TextStream对象来完成的。 • TextStream对象的作用是访问文本文件。 • 使用TextStream对象时,需要要借助FileSystemObject 对象或其附属对象来创建一个 TextStream 对象,然后利用TextStream对象来访问磁盘文件的内容。用于创建或打开一个文本文件并返回TextStram对象的常用方法有三个,如表6-3所示. 表6-3 创建TextStream对象的方法
TextStream对象的属性和方法 1、CreateTextFile()方法 • 语法规则如下 • CreateTextFile( filename,OverWrite, Unicode) • Filename——为文件名 • OverWrite——为是否可覆盖源文件,默认为Flase • Unicode——表示存储格式是否为Unicode格式,默认Flash • 该方法创建一个新文本文件 • 【例ch6\sl_1】编写一段代码,要求在指定文件夹下用CreateTextFile方法创建新的文本文件,如果该文件已经存在,则新创建的文件覆盖该文件。
2. OpenTextFile方法 • 如果要对已有的文本文件执行读取和追加操作,就要用到FileSystemObject对象的OpenTextFile方法。语法如下: • Set TextStream对象实例=FileSystemObject对象实例.OpenTextFile(filename [,iomode] [, create] [, format]) • 其中,FileName为文件名,IoMode为访问类型,Create为当文件不存在是是否创建该文件,Format为读或写文件时的数据格式。 • 参数FileName可包含绝对或相对路径。 • 参数IoMode说明需要的访问类型 • 其值可以为1即读文件内容、2即写文件内容、8即追加数据,1为默认值。 • 当Create参数设置为True时,如果写入或追加到的该文件不存在,则创建一个该文件。Create的默认值为False。 • 参数Format用于说明读或写文件时的数据格式。其值可以为0即ASCII数据格式、-1即Unicode数据格式、-2即数据使用系统缺省的格式,Format的默认值为0。 • 【例ch6\sl_2】编写一段代码,要求打开例6-1所创建的文件“MyFile.txt”,以备读出其内容。
3.OpenAsTextStream方法 • OpenAsTextStream方法的语法规则如下: • Set TextStream对象实例=FileSystemObject对象实例.OpenAsTextStream(IoMode,Format) • 其中,IoMode为访问类型,Format为读或写文件时的数据格式。 • 该方法的功能是打开与一个TextStream对象相应的文件,可用于对该文件的读、写或追加。 • 参数IoMode为需要的访问类型,其值可以为1即读文件内容、2即写文件内容、8即追加数据,1为默认值。 • 参数Format用于说明读或写文件时的数据格式。其值可以为0即ASCII数据格式、-1即Unicode数据格式、-2即数据使用系统缺省的格式,Format的默认值为0。 • 需要注意的是,OpenAsTextStream方法不需要FileName参数,因为程序的执行通过引用File对象进行,并且也不需要Create参数,因为该文件必须已存在。 • 【例ch6\sl_3】编写一段代码,要求利用OpenAsTextStream方法打开例1所创建的文件“MyFile.txt”,以备读出其内容。
写入无权限提示 • 当你在对文件操作功能的网页进行调试时,无论如何修改程序都不能正确执行,可能是什么原因?产生原因 • 可能对文件夹无写入权限。则首先去掉它的只读属性; • 可能盘符是NTFS文件系统,对everyone系统组无写入权。则要设置Everyone(任何人)具有完全控制权限 • 处理办法 • 我的电脑工具文件夹选项查看去掉“使用简单文件共享(推荐)”默认选择。使得磁盘属性对话框窗口出现“安全”选项卡 • 选择写入文件的盘符或文件夹属性安全everyone组 写入“允许”
6.2.1 关闭文本文件 • 文本文件使用完成后有必要关闭该文件,关闭文本文件时就要用到TextStream对象的Close方法。Close方法的功能用来关闭打开的TextStream文件并释放资源。 • Close方法 语法规则为: 语法格式:文本流对象.Close()或文件系统对象.Close() • 【例6-4】编写一段代码,要求打开并关闭例6-1所创建的文件“MyFile.txt”。
6.2.2 写文本文件 • 文本文件的内容写入需要用到TextStream对象的Write、WriteLine及WriteBlankLines三个方法。 (1)Write方法:用于向文件写入指定的字符串,但并不换行。 语法格式:文本流对象. Write(string) (2)WriteLine方法:用于向文件写入一行指定的内容。 • 语法格式:文本流对象.WriteLine(text) (3)WriteBlankLines方法:用于向文件写入指定数目的空行。 • 语法格式:文本流对象.WriteBlankLines (行数n)
文本文件的基本操作 • 文本文件的操作主要依赖于TextStream对象 • 其实HTML文件本质上也是文本文件,也可以一样操作,只要将扩展名改为.htm即可。 • 【例6-5】编写一段代码,要求打开例6-1所创建的文件“MyFile.txt”,并向该文件中交错写入几行和空行。
6.2.3读文本文件 • 读取文件时首先也要建立TextStream对象,然后用Read、ReadAll和ReadLine三个方法读取即可,同时需要利用AtEndOfStream属性判断是否已经到达文件结尾。 • TextStream文本流对象的方法 (1)Read:从TextStream文件当前光标的位置读入指定数目的字条并返回结果字条串,其语法规则 • 文本流对象.ReadLine(n) • n:指的是字符数目 (2)ReadAll方法:读取从当前位置到文件尾的全部内容。 语法格式:文本流对象.ReadAll () (3)ReadLine方法:从打开的文件中读取一行数据。 语法格式:文本流对象.ReadLine ()
例6-6编写一段代码,要求打开文件“MyFile.txt”,读出并在页面上显示出例6-1所创建文件“MyFile.txt”中写入的内容(ch6\SL-6.asp)例6-6编写一段代码,要求打开文件“MyFile.txt”,读出并在页面上显示出例6-1所创建文件“MyFile.txt”中写入的内容(ch6\SL-6.asp)
新建文本文件同时写入内容示例 eg6-1.asp
文本文件的读取和追加示例 Eg6-2.asp Eg6-3.asp
自动生成HTML文件示例 • HTML文件本质上也是文本文件,所以也可以自动创建,只不过需要将HTML代码当作字符串写入到文件中即可。请看具体示例。 Eg6-4.asp
6.2.4 转向指定位置 • 读取文本文件时,常常需要从指定行或指定行的指定位置开始读取指定数目的字符串,此时就要用到TextStream对象的Skip和SkipLine方法。 • Skip方法的功能是读取 TextStream 文件时跳过指定数目的字符,其语法规则如下: • Skip(numchars) • 其中,参数numchars为需要跳过的字符数。 • SkipLine方法的功能是读取 TextStream 文件时跳过下一行,其语法规则如下: • SkipLine()。 • 【例6-7】编写一段代码,要求打开文件“MyFile.txt”,读出并在页面上显示出例6-1所创建文件“MyFile.txt”中写入的指定行的和指定行的指定位置的内容。
6.2.5 TextStream属性应用 • 读取文本文件时,常常需要从判断光标所处的位置,此时就需要查询TextStream对象的一些属性。 • 【例6-8】编写一段代码,要求将文件“MyFile.txt”,当读出例6-5所示文件“MyFile.txt”时,在页面上时刻显示出光标所处的指定位置。
6.3 文件操作 • 文件和文件夹的基本操作实质上是一致的,都包括新建、复制、移动和删除几项功能,请注意对比两者的语法。 • 文件的复制、移动、删除、检查是否存在及获取文件属性等 • FileSystemObject对象或 File 对象的方法来完成 • FileSystemObject关于文件的几个方法 • CopyFile • MoveFile • DeleteFile • FileExists。
6.3.1 用FileSystemObject对象操作文件 1、复制文件: • FileSystemObject 对象的CopyFile方法的功能是将一个或多个文件复制到其他位置上,语法规则如下: • CopyFile source,destination[,overwrite] • 其中,参数source 为指定源文件字符串,当要多个文件时,文件名可以用通配符; • destination为指定目标位置的字符串,表示将源文件复制到该位置,不允许使用通配符; • overwrite为可选参数,表明是否覆盖现有文件,如果为True (默认值),则覆盖文件,如果为False,则不覆盖现有文件。 • 需要注意的是,如果将目标位置设置为只读属性时,CopyFile 操作不能进行。同时通配符只能在参数Source的最后一个组成部分中使用。 • 【例6-9】编写一段代码,要求将例6-5所示文件“MyFile.txt”复制到指定文件夹下。
例6-9 Ch6\sl_9.asp
2、移动文件 • FileSystemObject 对象的MoveFile方法的功能是将一个或多个文件移动到其他位置上,语法规则如下: • MoveFile source,destination • 其中,参数source为指定源文件字符串,当要多个文件时,文件名可以用通配符;destination为指定目标位置的字符串,表示将源文件移动到该位置,不允许使用通配符。 • 需要注意的是: 1. 如果destination不存在, MoveFile方法将不会进行文件移动; 2. 如果destination是已经存在的文件,将会出现错误; 3. 如果destination是文件夹,将会出现错误; 4. 如果 source 使用通配符但没有匹配的文件时,将会出现错误; 5.在遇到出现的第一个错误时MoveFile 方法停止移动。同时MoveFile 方法不会撤消错误发生前所做的任何更改。 • 【例6-10】编写一段代码,要求将例6-5所示文件“MyFile.txt”移动到指定文件夹下。
例6-10 Ch6\sl_10.asp
3、删除文件 • FileSystemObject 对象的DeleteFile方法的功能是将一个或多个指定文件删除掉。其语法规则如下: • DeleteFile filespec[.force] • 其中,参数filespec为指定要删除的文件名,当要删除多个文件时,文件名可以用通配符; • force为可选参数,表明是否删除只读文件,如果为True,则要删除只读文件,如果为False (默认值),则不要删除只读文件。 • 需要注意的是: 1. 如果该方法没有找到匹配文件,将会出现错误; 2. 在遇到出现的第一个错误时停止。DeleteFile方法不会撤消错误发生前所做的任何更改。 • 【例6-11】编写一段代码,要求将例6-5所示文件“MyFile.txt”从指定文件夹下删除掉。
例6-11 Ch6\sl_11.asp
文件的复制、移动和删除示例 Ch6\eg6-5.asp
6.3.2 用File对象操作文件 • File对象又称文件对象,一个文件就是一个File对象。 • 建立File对象的语法如下: Set File对象实例=FileSystemObject对象实例.GetFile(filename) • 其中filename表示文件的完整路径。 • File对象的方法 • Copy:将指定文件从一个位置复制到另一个位置 • Delete:将指定文件删除 • Move:将指定文件从一个位置移动至另一个位置 • OpenAsTextStream:打开指定文件,并返回一个与该文件对应的TextStream对象
1、复制文件 • File对象的Copy方法的功能是将一个或多个文件复制到其他位置上,语法规则如下: File对象实例.Copy destination [,overwrite] • 其中,destination为指定目标位置的字符串,表示将源文件复制到该位置,不允许使用通配符; • overwrite为可选参数,表明是否覆盖现有文件,如果为True (默认值),则覆盖文件,如果为False,则不覆盖现有文件。 • 【例6-12】编写一段代码,要求将例6-5所示文件“MyFile.txt”复制到指定文件夹下。
2.移动文件 • File对象的Move方法的功能是将一个或多个文件移动到其他位置上,语法规则如下: • File对象实例.Move(destination) • 其中,参数destination为指定目标位置的字符串,表示将源文件移动到该位置,允许使用通配符。 • 【例6-13】编写一段代码,要求将例6-5所示文件“MyFile.txt”移动到指定文件夹下。
3. 删除文件 • File对象的Delete方法的功能是将一个或多个指定文件删除掉。其语法规则如下: • File对象实例. Delete[(force)] • 其中,参数force为可选参数,表明是否删除只读文件,如果为True,则要删除只读文件,如果为False (默认值),则不要删除只读文件。 • 需要注意的是: 1. 如果该方法没有找到匹配文件,将会出现错误; 2. 在遇到出现的第一个错误时停止。Delete方法不会撤消错误发生前所做的任何更改。 • 【例6-14】编写一段代码,要求将例6-5所示文件“MyFile.txt”从指定文件夹下删除掉。
6.3.3 文件的存在性检查 • FileSystemObject 对象的 FileExists方法的功能时检查一个文件是否存在。如果被检测的文件存在,则将返回True值,否则将返回 False值。其语法规则如下: • FileExists(Filespec) • 其中,参数filespec 为检查的一个文件名,表示要确定是否存在的文件。 • 【例6-15】编写一段代码,要求检查例6-5所示文件“MyFile.txt”是否存在,并将检查结果在页面上显示处理。
6.3.4 文件信息获取 • File 对象的属性用于返回有关指定文件的信息。要获取一个文件的信息,首先要使用 FileSystemObject 对象的GetFile 方法来一个 File 对象,然后用这个File 对象的属性来提取该文件的信息。File 对象的属性如表6-8所示。 • 【例6-16】编写一段代码,要求查看并在页面上显示例6-5所示文件“MyFile.txt”创建日期等信息。
6.4 驱动器操作 • Drive对象又称驱动器对象,一个驱动器就是一个Drive对象。 • 驱动器的基本操作主要包括判断指定驱动器是否存在、获取指定的驱动器所对应的Drive对象以及获取指定的驱动器的名称等。 • 这些基本操作分别是通过FileSystemObject的方法 • DriveExists • GetDrive • GetDriveName来完成的。 • 建立Drive对象的语法如下: • Set Drive对象实例=FileSystemObject对象实例.GetDrive(drivename) • 其中drivename表示驱动器名称。
6.4.1 驱动器存在性判断 • FileSystemObject的方法DriveExists的基本功能就是判断指定的驱动器是否存在,如果该驱动器存在则返回True,不存在则返回False。其语法规则如下: • Drive对象实例.DriveExists(drivespec) • 其中,参数drivespec可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径。 【例6-17】编写一段代码,要求查看并在页面上显示本地是否存在“D:”和“H”磁盘驱动器。
6.4.2 驱动器信息获取 • 本地磁盘驱动器或者网络共享驱动器的文件系统、剩余容量、序列号、卷标名等信息获取是通过Drive 对象的属性来得到的。 • 要想操作 Drive 对象的属性,首先要创建FileSystemObject 对象,利用FileSystemObject 对象的GetDrive方法或者来得到Drive对象。Drive对象的属性如表6-9所示。 • FileSystemObject的方法DriveExists的基本功能就是判断指定的驱动器是否存在,如果该驱动器存在则返回True,不存在则返回False。其语法规则如下: • DriveExists(drivespec) • 其中,参数drivespec可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径。 • 【例6-18】编写一段代码,要求判断D盘是否存在,如果存在则查看并在页面上显示 “D:”磁盘驱动器的总容量等信息。
例:利用For Each循环列出所有驱动器的名称,请看具体代码 Ch6\eg6-7.asp
6.5 文件夹操作 • 文件夹的基本操作主要包括文件夹的创建、文件夹的复制、文件夹的移动、文件夹的删除、检查文件夹是否存在以及获取文件夹的属性等。这些基本操作是通过FileSystemObject 或 Folder对象的方法来完成的。
6.5.1 用FileSystemObject对象操作文件夹 • FileSystemObject的关于文件夹的几个方法 • CreateFolder、CopyFolder、MoveFolder、DeleteFolder、FolderExists。 1.创建新文件夹: • FileSystemObject 对象的CreateFolder方法的功能是创建一个新文件夹,语法规则如下: • FileSystemObject 对象实例.CreateFolder(foldername) • 其中,参数foldername为待创建的文件夹路径。 • 需要注意的是,如果 foldername 已经存在则将产生错误。 【例6-19】编写一段代码,要求在文件夹“D:\”创建一个新文件夹“myfolder”。
Ch6\SL-20.asp 2.复制文件夹: • FileSystemObject 对象的CopyFolder方法的功能是将一个或多个文件夹复制到其他位置上,语法规则如下: • FileSystemObject 对象实例. CopyFolder source, destination [,overwrite] • 其中,参数source 为指定源文件夹字符串; • destination为指定目标位置的字符串,表示将源文件夹复制到该位置; • overwrite为可选参数,表明是否覆盖现有文件夹,如果为True (默认值),则覆盖文件夹,如果为False,则不覆盖现有文件夹。 【例6-20】编写一段代码,要求将例6-19所创建的文件夹“myfolder”复制到指定文件夹下。
Ch6\SL-21.asp 3.移动文件夹 • FileSystemObject 对象的MoveFolder方法的功能是将一个或多个文件夹移动到其他位置上,语法规则如下: • FileSystemObject 对象实例. MoveFolder source, destination • 其中,参数source为指定源文件夹字符串,当要多个文件夹时,文件夹名可以用通配符; • destination为指定目标位置的字符串,表示将源文件夹移动到该位置,不允许使用通配符。 【例6-21】编写一段代码,要求将例6-19所创建的文件夹“myfolder”移动到指定文件夹下。
Ch6\SL-22.asp 4.删除文件夹 • FileSystemObject 对象的DeleteFolder方法的功能是将一个或多个指定文件夹删除掉。其语法规则如下: • FileSystemObject 对象实例. DeleteFolder folderspec, force • 其中,参数folderspec为指定要删除的文件夹名,当要删除多个文件夹时,文件夹名可以用通配符; • force为可选参数,表明是否删除只读文件夹,如果为True,则要删除只读文件夹,如果为False (默认值),则不要删除只读文件夹。 【例6-22】编写一段代码,要求将例6-19所创建的文件夹“myfolder”删除掉。