File Access 组件中常见的对象有 FileSystemObjectTextStreamFileFolderDrive等,其中每一个对象都有不同的属性和方法,我们将会在用到的时候进行详细介绍。

FileSystemObject 对象用于访问服务器上的文件系统。

此对象可对文件、文件夹和目录路径进行操作、获取文件系统信息。

直接上例子(FSO_TextFile.asp)了,首先我们检查是否存在“test.txt”文件,不存在则创建它,并写入一些文本,然后将该内容显示在表单中,经过修改后,再实现保存功能。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>FileSystemObject 组件应用</title>
</head>
<body>
<h3>
<%
Const sFileName = "/test.txt"
Const ForReading = 1 '以只读方式打开文件
Const ForWriting = 2 '以写方式打开文件
Const ForAppending = 8'打开文件并从文件末尾开始写
Dim oFSO, oFile, sFileContent '读取和保存功能都在同一个页面,先判断是否是表单提交保存(POST)
If UCase(Trim(Request.ServerVariables("REQUEST_METHOD"))) = "POST" Then
'保存功能的实现
sFileContent = Request.Form("FileContent")
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oFile = oFSO.OpenTextFile(Server.MapPath(sFileName), ForWriting)
oFile.Write(sFileContent)
oFile.Close
Response.Write("test.txt 保存完毕,并读取")
Else
'创建FSO对象
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
'判断 test.txt 是否存在,不存在则创建 test.txt 文件
If NOT oFSO.FileExists(Server.MapPath(sFileName)) Then
Set oFile = oFSO.CreateTextFile(Server.MapPath(sFileName))
oFile.Write("test.txt 首次创建,请开始编辑吧")
Response.Write("文件不存在,创建 test.txt,")
oFile.Close
Set oFile = Nothing
End If
Set oFile = oFSO.OpenTextFile(Server.MapPath(sFileName), ForReading)
Response.Write("读取 test.txt 内容")
'读取 test.txt 全部内容
sFileContent = oFile.ReadAll()
oFile.Close
End If 'POST 判断
%>
</h3>
<form action="" method="POST">
<textarea rows="10" cols="50" name="FileContent"><%=sFileContent%></textarea>
<input type="submit" value="保存"/>
</form>
<%
Set oFSO = Nothing
Set oFile = Nothing
%>
</body>
</html>

如果 test.txt 文件不存在的话,则首次运行,会创建该文件,创建文件时用到了 FSO 的 CreateTextFile 方法,该方法返回一个 TextStream 对象。

首次运行效果如下:

我们可以开始编辑,最后点击“保存”提交表单。

请注意

我们在使用完 oFile 和 oFSO 对象完毕后,都及时将它们关闭并清空,这样有助于节省服务器的系统资源。


FileSystemObject 其他方法

我们只是讲解了 FSO 最常用的功能之一,读取和写入文本文件的操作。FSO 具有对驱动器和文件夹两种文件系统对象访问的功能,这里我们只是罗列一下有需要的时候仅供参考。

FSO 对象与驱动器有关的方法如下表:

方法 说明
DriveExists(drive) 返回指定的驱动器是否存在的布尔值,drive 参数必须的,驱动器的字母或者文件、文件夹完整的绝对路径。
GetDrive(drivespec) 返回由 drivespec 参数规定的 Drive 对象,可以使驱动器字母(c),或者带冒号的驱动器字母(c:),或者带有冒号和路径分隔符的驱动器字母(C:\),或者任何网络共享规范(\\machine\sharename
GetDriveName(path) 返回一个字符串,该值是指定路径的驱动器名称,必须是文件或文件夹的绝对路径,或者仅仅是驱动器名称(C或者 C:)

以上每个方法具体的示例已经在代码(FSO_Other.asp) 中,请自行下载测试吧,效果如下:


FSO 对象与文件夹有关的方法如下表:

方法 说明
CopyFolder source, destination[, overwrite] 从指定的源文件夹 source (可以包含通配符)中复制一个或多个文件夹到指定目标文件夹 destination,包含了源文件夹中的所有文件。

如果 source 包含通配符或 destination 末尾是路径分隔符(”\”)那么认为 destination 就是要放置源文件夹的拷贝文件夹。

overwirte 默认为 True

CreateFolder(name) 创建一个 name 文件夹,如果 name 已经存在将产生错误
DeleteFolder(foldername[, force]) 删除一个或多个指定的文件夹,如果您视图删除不存在的文件夹将会引发错误。foldername 参数支持通配符,force 布尔参数可选,是否删除只读文件夹,True 为删除,默认值为 False
FolderExists(foldername) 返回指定文件夹是否存在的布尔值
GetAbsolutePathName(path) 为指定路径返回从根驱动器开始的完整路径。例如当前路径是 F:\JJ\FSO,而 path 参数传递的是 Folder ,则返回的完整路径是 F:\JJ\FSO\Folder
GetFolder(path) 返回指定路径的 Folder 对象。
GetParentFolderName(path) 返回指定路径中最后成分的父文件夹的名称。path 参数需要其 父文件夹名称的文件或文件夹路径。不检测该文件夹是否存在
GetSpecialFolder(foldername) 返回一个特定的 Windows 文件夹对应的 Folder 对象,参数 foldername 可以是

0=WindowsFolder

1=SystemFolder

2=TemporaryFolder

MoveFolder source, destination 将 source 指定的一个或多个文件夹移动到 destination 指定的文件夹。在 source 中可以包含通配符,但在 destination 中不行。如果 destination 已经存在则产生错误

以上每个方法具体的示例已经在代码(FSO_Other.asp) 中,请自行下载测试吧,效果如下:


FSO 对象与文件有关的方法如下表:

方法 说明
CopyFile source, destination[, overwrite] 从一个位置向另一个位置拷贝一个或多个文件,source 参数可以使用通配符,destination 参数不可以使用通配符,overwrite 参数默认为 True(覆盖)
CreateTextFile(filename[, overwrite[, unicode]]) 在当前文件中创建新的文本文件,并返回可以读或写的 TextStream 对象,overwrite 参数默认为 True, unicode 参数默认为 False(创建ASCII文件)
DeleteFile(filename[, force]) 删除一个或多个指定的文件,如果您视图删除的文件不存在,会引发错误
FileExists(filename) 返回指定的文件是否存在的布尔值,如果存在返回 True
GetBaseName(path) 返回指定路径中的文件或文件夹的基准名称
GetExtensionName(path) 返回包含指定路径中最后成分的文件扩展名的字符串
GetFile(path) 返回指定路径的 File 对象。
GetFileName(path) 返回指定路径中最后成分的文件名或文件夹名的字符串
GetTempName 无参数,返回一个随机产生的临时文件或文件夹
MoveFile source, destination 把一个或多个文件从一个位置移动到另一个位置,source 参数可以包含通配符,destination 参数不可以包含通配符
OpenTextFile(fname, mode[, create[, format]]) 打开指定文件,并返回 TextStream 对象,fname 参数是要打开的文件名称,mode 参数可选1、2、8

以上每个方法具体的示例已经在代码(FSO_Other.asp) 中,请自行下载测试吧,效果如下:

示例代码下载

FSO.RAR

ASP入门(十四)-FileSystemObject 对象的更多相关文章

  1. js上 十四、对象

    十四.对象 #1.初识对象 什么是对象? 在js中,一切皆是对象. 对象,生活中可见和不可见的东西,在世界中,客观存在的都是一个对象. 桌子,笔记本,手机,人. 在日常生活中,我们是如何来描述这个对象 ...

  2. Spring入门(十四):Spring MVC控制器的2种测试方法

    作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环 ...

  3. [WebGL入门]十四,绘制多边形

    注意:文章翻译http://wgld.org/.原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外,鄙人webgl研究还不够深入.一些专业词语,假设翻译有误,欢迎大家 ...

  4. Android入门(十四)内容提供器-实现跨程序共享实例

    原文链接:http://www.orlion.ga/661/ 打开SQLite博文中创建的 DatabaseDemo项目,首先将 MyDatabaseHelper中使用 Toast弹出创建数据库成功的 ...

  5. ASP入门(四)-VBScript的流程控制语句

    VBScript条件语句 我们可以使用四种条件语句 If - Then - 语句 If - Then - Else 语句 If - Then - ElseIf 语句 Select - Case 语句 ...

  6. 前端学习(三十四)对象&模块化(笔记)

    人,工人 //类的定义    function Person(name,age){ //构造函数        //工厂模式        //1.原料        //var obj = new ...

  7. 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较

    本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...

  8. JavaScript学习笔记(十四)——对象

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  9. SpringBoot入门 (十四) Security安全控制

    本文记录在SpringBoot使用SpringSecurity进行安全访问控制. 一 什么是Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访 ...

  10. Scripting.FileSystemObject对象的详细技巧指南

    Scripting.FileSystemObject对象的详细技巧指南 FileSystemObject对象提供对计算机文件系统的访问: powered by 25175.net 在代码内操作文本文件 ...

随机推荐

  1. 在Ubuntu的系统中怎样将应用程序加入到開始菜单中

    /*********************************************************************  * Author  : Samson  * Date   ...

  2. Introduction to Cortex Serial Wire Debugging

    Serial Wire Debug (SWD) provides a debug port for severely pin limited packages, often the case for ...

  3. go中的接口

    对于golang的接口,纠结两天了,今天有种茅塞顿开的感觉,有必要写点东西了. 纠结接口,说白了就是搞不透接口,方法,结构体几者之间的关系以及具体的用途.可以简单的从三者的定义说起,接口说白了就是一个 ...

  4. hdu4333 Revolving Digits(扩展kmp)

    Revolving Digits Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. android开发之GestureDetector手势识别(调节音量、亮度、快进和后退)

    写UI布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  6. Xcode工程文件打不开:cannot be opened because the project file cannot be parsed

    svn更新代码后,打开xcode工程文件,会出现  xxx..xcodeproj  cannot be opened because the project file cannot be parsed ...

  7. 迭代dict的key和value

    我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的. 首先,我们看看 dict 对象的 items() 方法返回的值: & ...

  8. SQL:显示每天的小计,某一天没有记录也要显示

    对于这种需求,我们需要一个主表存储连续的日期,然后使用 left join 即可. declare @Daily table ( 日期 date ) declare @start date = '20 ...

  9. java项目实现流水号自动增长

    项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001. 实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储: 业务获取新的编码,考虑并发问题,获取编 ...

  10. 每天一个linux命令-tai命令

    动态监视文件尾部. 命令参数: -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示行数 --pid=PID 与-f合 ...