ASP入门(十四)-FileSystemObject 对象
File Access 组件中常见的对象有 FileSystemObject、TextStream、File、Folder、Drive等,其中每一个对象都有不同的属性和方法,我们将会在用到的时候进行详细介绍。
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) 中,请自行下载测试吧,效果如下:
示例代码下载
ASP入门(十四)-FileSystemObject 对象的更多相关文章
- js上 十四、对象
十四.对象 #1.初识对象 什么是对象? 在js中,一切皆是对象. 对象,生活中可见和不可见的东西,在世界中,客观存在的都是一个对象. 桌子,笔记本,手机,人. 在日常生活中,我们是如何来描述这个对象 ...
- Spring入门(十四):Spring MVC控制器的2种测试方法
作为一名研发人员,不管你愿不愿意对自己的代码进行测试,都得承认测试对于研发质量保证的重要性,这也就是为什么每个公司的技术部都需要质量控制部的原因,因为越早的发现代码的bug,成本越低,比如说,Dev环 ...
- [WebGL入门]十四,绘制多边形
注意:文章翻译http://wgld.org/.原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外,鄙人webgl研究还不够深入.一些专业词语,假设翻译有误,欢迎大家 ...
- Android入门(十四)内容提供器-实现跨程序共享实例
原文链接:http://www.orlion.ga/661/ 打开SQLite博文中创建的 DatabaseDemo项目,首先将 MyDatabaseHelper中使用 Toast弹出创建数据库成功的 ...
- ASP入门(四)-VBScript的流程控制语句
VBScript条件语句 我们可以使用四种条件语句 If - Then - 语句 If - Then - Else 语句 If - Then - ElseIf 语句 Select - Case 语句 ...
- 前端学习(三十四)对象&模块化(笔记)
人,工人 //类的定义 function Person(name,age){ //构造函数 //工厂模式 //1.原料 //var obj = new ...
- 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较
本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...
- JavaScript学习笔记(十四)——对象
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- SpringBoot入门 (十四) Security安全控制
本文记录在SpringBoot使用SpringSecurity进行安全访问控制. 一 什么是Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访 ...
- Scripting.FileSystemObject对象的详细技巧指南
Scripting.FileSystemObject对象的详细技巧指南 FileSystemObject对象提供对计算机文件系统的访问: powered by 25175.net 在代码内操作文本文件 ...
随机推荐
- PHP 服务端 和 APP 客户端 实现 RSA+AES 双向加密解密
目的:服务端和移动端双向加密解密 共有七个文件 其中包括三个类文件 lib_aes.php aes对称加密解密类 server_rsa_crypt.php 服务端RSA公钥私钥非对称加密解密类 cli ...
- 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)等
http://blog.itpub.net/26736162/viewspace-2136339/
- linux内核数据包转发流程(二):中断
[版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 内核在处理2层数据包之前,必须先处理中断系统.设立中断系统,才有可能每秒处理成千的 ...
- hdu 4643 GSM 计算几何 - 点线关系
/* hdu 4643 GSM 计算几何 - 点线关系 N个城市,任意两个城市之间都有沿他们之间直线的铁路 M个基站 问从城市A到城市B需要切换几次基站 当从基站a切换到基站b时,切换的地点就是ab的 ...
- AngularJS动态设置CSS
使用AngularJS动态设置CSS大致有2种思路: 1.通过动态设置class名称 比如先定义2个样式: .show-true{ display:block;} .show-flase{ ...
- 从零开始写一个发送h264的rtsp服务器(上)
转自:http://blog.csdn.net/jychen105/article/details/47006345 一.什么是RTSP 通常所说的rtsp协议其实包含三个协议: rtsp协议, rt ...
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
当向线程池提交callable任务后,我们可能需要一次性获取所有返回结果,有三种处理方法. 方法一:自己维护返回结果 // 创建一个线程池 ExecutorService executorServic ...
- 趣谈Java变量的可见性问题
了解过多线程的我们,对synchorized,sleep和valatile都比较了解,但是当这三个名词和“Java变量得可见性”的话题联系在一起不知道大家是否还可以保持大脑清晰??? 最近看到一个关于 ...
- Java命令学习系列(四)——jstat
jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具.他可以显示本地或远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据, ...
- 层次聚类 Hierarchical Clustering
-------------------------------- 不管是GMM,还是k-means,都面临一个问题,就是k的个数如何选取?比如在bag-of-words模型中,用k-means训练码书 ...